28 de septiembre de 2009

PHP: Redirecciones 301 con .htaccess


Redireccionar una petición por url a la carpeta de tu servidor que tu quieras es muy sencillo gracias a Apache, su mod_rewrite y a su htaccess.

Tan sólo tienes que editar el fichero (o crearlo) en la ruta http de tu servidor (suele ser httpdocs o public_html) y agregar lo siguiente:
  • Para ficheros:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^prueba.asp$ http://www.miweb.com/ [R=301,L]

    Cómo veis en la primera parte de RewriteRule establecemos el fichero que provoca el cambio de url, en este caso "prueba.asp", cuando el usuario intente cargar http://www.miweb.com/prueba.asp será redireccionado por el servidor a http://www.miweb.com

  • Para carpetas:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^prueba/(.*)$ http://www.miweb.com/ [R=301,L]

    Cómo veis en la primera parte de RewriteRule establecemos la carpeta que provoca el cambio de url, en este caso "prueba", cuando el usuario intente cargar http://www.miweb.com/prueba/fichero.php será redireccionado por el servidor a http://www.miweb.com
Para que este código completo funcione deberá estar activado el mod_rewrite de .htaccess, os pongo a continuación el código completo del ejemplo:

# Ejemplo de .htaccess

order allow,deny
deny from all

Options +FollowSymlinks

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^prueba/(.*)$ http://www.miweb.com/ [R=301,L]
RewriteRule ^prueba.asp$ http://www.miweb.com/ [R=301,L]

# Fin del ejemplo


Recordáos por último que en mod_rewrite la instrucción que manda es la anterior, no la última como sucede por ejemplo con CSS.

No hay comentarios: