Aqui estoy despues de tanto tiempo sin escribir por aca, esta vez les dare instrucciones de como usar el modulo:
mod_rewrite del servidor Apache pero en primer lugar para poder usar este modulo hay que hacer unas modificaciones:
Las pruebas las hare con el siguiente sistema:
Windows XP SP3 [
Apache Server 2.0.63] [
PHP 5.2.6]
Aqui esta la guia oficial del
modulo mod_rewrite el problema es que esta en ingles.
El modulo
mod_rewrite cuando esta activado puedes usar reglas en
expresiones regulares tanto para esta url:
http://midominio.com/index.php?s=categorias&ss=ropa&id=franelas
como esta:
http://midominio.com/categorias/ropa/franelas
Las dos son validas pero la segunda es mucho mejor.
Antes que nada para poder usar el
mod_rewrite debemos configurar Apache de esta manera:
1. Editar el archivo
httpd.conf del directorio
conf de
Apache la direccion del archivo mas o menos seria:
C:\Archivos de programa\Apache Group\Apache2\conf
Puedes abrir el archivo con el bloc de notas y busca esta sentencia en el archivo:
AllowOverride None
La cambias a:
AllowOverride All
De esta manera ahora se tendra acceso al archivo
.htaccess del servidor
2. Activar el modulo
mod_rewrite ya que en esta version no viene activada por defecto ahora en ese archivo busca esta linea que contenga:
#LoadModule rewrite_module modules/mod_rewrite.so
Quitale el (#) numeral para que cargue el modulo
mod_rewrite.so:
LoadModule rewrite_module modules/mod_rewrite.so
3. Reiniciar el Apache.
Puedes hacer una prueba para ver si Apache lee el archivo
.htaccess antes de enviar la URL, puedes reproducir un error escribiendo lo que quieras en el archivo
.htaccess por ejemplo en el directorio principal
C:\Archivos de programa\Apache Group\Apache2\htdocs creas un archivo
.htaccess de la siguiente manera:
--> Click derecho en el directorio --> Nuevo --> Documento de texto
Luego abres el archivo con el Bloc de notas escribes cualquier cosa y luego Menu Archivo --> Guardar como...
Nombre: .htaccess
Tipo: Todos los archivos
Click en Guardar
Para ver si Apache accede al archivo
.htaccess ve a la direccion:
http://localhost/
Y te aparecera el error: "
Internal Server Error"

Ahora pasamos a hacer pruebas con PHP vamos a crear un archivo
index.php en este directorio:
C:\Archivos de programa\Apache Group\Apache2\htdocs
Escribe esto en el archivo
index.php:
<?php
print_r($_GET);
?>
Ahora editar el archivo
.htaccess antes guardado en:
C:\Archivos de programa\Apache Group\Apache2\htdocs
Escribe esto en el archivo
.htaccess:Options +FollowSymLinks -Indexes
# activar el re-escrito de las URLs
RewriteEngine On
# Si la URL NO es un archivo
RewriteCond %{REQUEST_FILENAME} !-f
# Si la URL NO es un directorio
RewriteCond %{REQUEST_FILENAME} !-d
# Entonces enviar la URL amigable al archivo index.php
RewriteRule ^(.*)$ index.php?query_string=$1 [L]
Aqui puedes descargarte una chuleta del
mod_rewrite en formato PNG o PDF esta en ingles, a ver si me animo y hago uno en español.
Haz una prueba y escribe esto en el navegador:
http://localhost/esto/es/una/url/amigable/que/se/extiende/bastante/mas/y/mas
Vera algo como esto en la salida del archivo
index.phpArray
(
[query_string] => esto/es/una/url/amigable/que/se/extiende/bastante/mas/y/mas
)

Viendo estos ejemplo tanto del contenido del
.htaccess,
index.php y la salida en el navegador ya se va teniendo una idea de lo que hace el modulo
mod_rewrite de Apache, si el modulo no estuviese activado Apache te lanzaria un error intento esto para reproducir el error, en el archivo
.htaccess cambia esto:
RewriteEngine On
Por esto:
RewriteEngine Off
Escribe en el navegador:
http://localhost/esto/es/una/url/amigable/que/se/extiende/bastante/mas/y/mas
Y como veras te lanzara un error 404
Not Found.
Para saber que URL le esta llegando al archivo
index.php tienes que parsear la URL de esta manera:
<?php
// ejemplo: http://midominio.com/ropa/franelas/quicksilver-html
$url = explode( "/", $_SERVER['REQUEST_URI'] ); // separar el array con / slash
$seccion = $url[0]; // ropa
$subseccion = $url[1]; // franelas
$contenido = $url[2]; // quicksilver-html
?>
NOTA: este post se actualizara periodicamente. Ultima actualizacion:
22/02/09Publicado en
tttony.blogspot.com