SEO · 5 min read · Jan 02, 2026

Los Usos Útiles de Mod Rewrite

Los Usos Útiles de Mod Rewrite

Autor: Mike Ems

En este tutorial, voy a enseñar qué es mod rewrite y algunos ejemplos de sus usos. Mod rewrite es una herramienta poderosa y una de las formas más simples de hacer que tu sitio web sea más amigable con SEO.

¿Qué es Mod Rewrite?

Mod rewrite es una parte de los servidores apache que puede reescribir URLs solicitadas al vuelo. Como admite un número infinito de reglas que a su vez tienen condiciones de regla ilimitadas, es muy flexible y un mecanismo importante de manipulación de URLs. Se puede utilizar para usuarios de internet y para URLs amigables con los motores de búsqueda. Esto aumenta la posibilidad de que el sitio web impulsado por bases de datos sea indexado.

Habilitando / Instalando Mod Rewrite

Lo primero que queremos hacer es asegurarnos de que tenemos mod_rewrite en nuestro servidor. Por defecto, Apache tiene mod_rewrite instalado, pero no habilitado. La forma más fácil de probar si mod_rewrite está habilitado en tu servidor es crear un archivo .htaccess en un directorio de prueba como /modrewrite-test/.htaccess con lo siguiente dentro:

Options +FollowSymLinks  
RewriteEngine On

Ahora intenta navegar al subdirectorio. Una de dos cosas podría suceder:

  • Sin errores ¡Felicidades, el motor mod_rewrite ahora está habilitado!
  • 500, Error Interno del Servidor Si recibes este mensaje, entonces mod_rewrite no estaba instalado/habilitado en tu servidor.

Si descubriste que mod_rewrite no estaba instalado en tu servidor, sigue estos pasos.

  1. Encuentra el archivo httpd.conf (normalmente lo encontrarás en una carpeta llamada conf, config o algo por el estilo)
  2. Dentro del archivo httpd.conf descomenta la línea LoadModule rewrite_module modules/mod_rewrite.so (elimina el signo de número ‘#’ que está delante de la línea)
  3. También encuentra la línea ClearModuleList y asegúrate de que la línea AddModule mod_rewrite.c no esté comentada.

Después de estos pasos, reinicia tu servidor apache con el siguiente comando.

/etc/init.d/httpd restart

Ahora deberías tener mod_rewrite habilitado con éxito. Asegúrate de probar mod_rewrite nuevamente una vez que el servidor apache haya sido reiniciado.

Usando Mod Rewrite Para Siempre Eliminar / Agregar WWW

Un problema fácilmente solucionable que muchos sitios web tienen es la duplicación de resultados en los motores de búsqueda. En cualquier motor de búsqueda dado, http://www.example.com/ y http://example.com son dos sitios web completamente diferentes. Este es un gran problema porque el contenido en tu sitio web se identifica como contenido duplicado, y eso reduce tus clasificaciones en los motores de búsqueda. Usando nuestro nuevo amigo, mod_rewrite, podemos evaluar este problema.

En la parte superior de cualquier archivo .htaccess, necesitas activar Mod Rewrite. Esto siempre debe estar en la parte superior de tu archivo .htaccess. Solo necesitas activar Mod Rewrite una vez.

RewriteEngine On

Además, necesitas establecer tu Rewrite Base. Esto es normalmente el directorio en el que se encuentra el archivo .htaccess. Si tu archivo .htaccess está ubicado en tu carpeta raíz, tu Rewrite Base se vería así:

RewriteBase /

Ahora bien, hay dos opciones para elegir. Puedes optar por eliminar siempre el www, o siempre mantenerlo. Para eliminar siempre www (mi método preferido), crea un archivo .htaccess en tu directorio raíz. Dentro de ese archivo, agrega lo siguiente:

RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]  
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

Del mismo modo, si deseas agregar siempre www, agrega lo siguiente a tu archivo .htaccess:

RewriteCond %{HTTP_HOST} ^example.com$  
RewriteRule (.*) http://www.example.com$1 [R=301]

Asegúrate de cambiar example.com por tu dominio.

Usando Mod Rewrite para Limpiar Tus URLs

El uso más popular de Mod Rewrite es usarlo para limpiar las URLs de tu sitio web. Como puede que sepas, a los motores de búsqueda no les gustan particularmente las URLs con muchos argumentos como muchos sitios web sirven. Ejemplo:

http://www.example.com/index.php?p=about

Con el poder del módulo mod_rewrite de apache, podemos hacer que esta URL sea mucho más limpia.

http://www.example.com/about.html

Para lograr esto, tenemos que ver a nuestro buen amigo las expresiones regulares. Sé que estás muy emocionado ahora. Para lograr la reescritura anterior, agregué lo siguiente a mi archivo .htaccess después de las líneas de agregar/eliminar www.

RewriteRule ^([^/]+).html$ /index.php?p=$1 [QSA,L,NC]

Veamos más de cerca esta línea para que realmente podamos entender lo que está haciendo.

([^/]+)

Esta es la expresión regular para coincidir con cualquier cosa excepto una barra diagonal. Esta es la forma más fácil de coincidir con cualquier cosa que caiga entre dos barras diagonales al tratar con la reescritura de URLs.

.html

Esto reescribe la url para que tenga .html al final. Esto da la apariencia de un archivo .html regular a tu archivo php.

/index.php?p=$1

Esta es la parte de la reescritura que es la ubicación de origen. Cada vez que tienes una expresión regular en la primera parte que coincide con una cadena determinada, deberías tenerla referenciada en esta parte. El $1 hace referencia a la primera expresión regular en la primera mitad de la línea. Así que cualquier valor que se asigne a la variable p se coloca donde está la primera expresión regular en la primera mitad de la línea.

Si quisieras que tu URL se viera como un directorio, usarías esta línea en lugar de la que se dio anteriormente.

RewriteRule ^([^/]+)/?$ /index.php?p=$1 [QSA,L,NC]

Esto devolvería URLs como esta:

http://www.example.com/about/

Agregando una Barra Final a Tus URLs

El punto principal de agregar una barra final a tus URLs es que aumenta el rendimiento del servidor. Cuando se agrega una barra final al final de una URL que no termina en una extensión de archivo, le dice al servidor que solo haga una llamada a sí mismo, disminuyendo así el tráfico del servidor.

Para siempre agregar una barra final a una URL que no termina en una extensión de archivo, como http://www.example.com, agrega lo siguiente a tu archivo .htaccess en tu directorio raíz.

rewriteCond $1 !/$  
rewriteCond %{REQUEST_FILENAME}/ -d  
rewriteRule (.+) http://www.example.com/$1/ [R=301,L]

La primera línea verifica si no hay barra final. La segunda línea verifica si existe un directorio con la URL dada si se agrega la barra final. La tercera línea agrega la barra final y redirige al usuario.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.