1000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!
Soporte de reescritura de URL
La reescritura instantánea de URL es una técnica destinada a cambiar el nombre aparente de páginas web. Sin embargo, el cambio simplemente lo producen redirecciones virtuales del nuevo nombre (aparente) al antiguo nombre (invisible al visitante). De este modo, el nombre de la página propiamente dicho no cambia.
En general, esto sirve para que los nombres de las páginas sean más "limpios", ya que se esconden los parámetros de URL pasados a las páginas dinámicas, por ejemplo. Nadie podrá ver que se trata de páginas dinámicas con URL extendidas. Además de ser más atractivo para el visitante, esto tiene un gran interés para posicionar páginas web, ya que los motores de búsqueda no suelen tomar URL que contengan demasiados parámetros.
Acciones a realizar
1. Reescribir el nombre de las páginas
Podríamos transformar la URL de la página "article.php?id=25& categorie=4&page=3" en "article-25-4-3.html" o incluso en "titre-article-25-4-3.html". Aquí tiene el contenido del archivo htaccess que permite realizar lo mencionado anteriormente, siempre que el archivo article.php esté situado en el directorio web/admin/ del servidor.
Opciones ++FollowSymlinksRewriteEngine onRewriteBase /admin/RewriteRule ^article-([0-9]*).([0-9]*).([0-9]*).html$ article.php?id=$1&categorie=$2&page=$3 [L]
La línea "Options +FollowSymlinks" permite seguir los enlaces simbólicos y no siempre es necesaria.
La línea "RewriteEngine on" permite activar el mod_rewrite de Apache, es decir, permite activar la reescritura de URL.
La línea "RewriteBase /admin/" permite definir de una vez por todas en qué directorio trabajaremos con los archivos que vienen a continuación (article.php...).
La línea "RewriteRule", que puede parecer un poco más complicada, es una línea que hay que añadir para cada URL que desees reescribir.
Para nuestro ejemplo, sólo tenemos una que se desglosa del siguiente modo:
El primer carácter "^": indica el inicio de un nombre de archivo virtual a redirigir.
El carácter "$" después de ". html": indica el final de ese nombre de archivo virtual.
Cada agrupación de "([0-9]*)": se basa en las expresiones regulares e indica que una sucesión de cifras del 0 al 9 se encontrará presente y, a continuación, recuperada para poderla colocar en la variable correspondiente "$1", "$2" y "$3", como se puede ver al final de la línea.
El signo "[L]" significa un final de línea. Es el final de la regla a reescribir para este elemento.
Cuando un visitante de tu sitio solicite la página "article-25-4-3.html", el archivo .htaccess te redirigirá automáticamente a la página "article.php?id=25&categorie=4&page=3" sin que sea visible para él.
Atención: incluso si tus reglas de reescritura de URL están en el lugar adecuado y funcionan correctamente, todavía se podrá acceder a las páginas utilizando la antigua URL con los parámetros. De ahí, la necesidad de cambiar correctamente todos los enlaces de tu sitio web para que se encuentren en el nuevo formato.
Para crear reglas de reescritura más complejas, vete a la documentación de Apache en la URL rewriting.
2. 2. Redirección permanente hacia un segundo dominio
En el caso de que poseas varios dominios para un mismo sitio y desees poder establecer comunicación entre todos ellos, puedes redirigir todas las peticiones de apertura de páginas a otro dominio, de modo que tu dominio principal continúe mostrándose en la barra de direcciones. Por ejemplo, si "www.dominio.xyz" y "www.mon-dominio.xyz" apuntan al mismo sitio y el primero citado es el dominio principal, aquí tienes el contenido del archivo .htaccess que hay que establecer en la raíz del primero:
RewriteEngine OnRewriteRule ^(.*)$ http://www.mon-domaine.xyz/$1 [R=301]
Esto tendrá como efecto recuperar el nombre de cada página llamada en "www.dominio.xyz" y abrirla en "www.mon-dominio.xyz " de modo transparente para el internauta. [R=301] significa redirección permanente.