Actualizado el domingo, 17 marzo, 2024
Crear URL canónicas para su sitio es una parte importante de un buen SEO. En esta publicación rápida, veremos varias técnicas .htaccess para eliminar y requerir el prefijo www
, y además veremos cómo eliminar cualquier index.php
de todos los URI.
Para usar cualquiera de estos fragmentos de código, agréguelos al archivo .htaccess raíz de su sitio (o agréguelos a través de la configuración del servidor).
Eliminar www de todas las URL
Este segmento de .htaccess elimina el prefijo www de todas las URL:
# remove www
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule (.*) https://example.com/\ [R=301,L]
</IfModule>
Edite example.com
para que coincida con su dominio y pruebe bien.
Nota: aquí hay una sintaxis alternativa para RewriteCond
:
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
De cualquier manera funciona bien.
Requerir www para todas las URL
Alternativamente, este segmento de .htaccess agrega el prefijo www a todas las URL:
# require www
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule (.*) https://www.example.com/\ [R=301,L]
</IfModule>
Edite example.com
para que coincida con su dominio y pruebe bien.
Quitar el índice.php de todas las URL
Este fragmento de código .htaccess elimina el index.php
de todas las URL:
# remove index.php
<IfModule mod_rewrite.c>
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.php\ HTTP/
RewriteRule ^(([^/]+/)*)index\.php$ https://example.com/\ [R=301,L]
</IfModule>
Edite example.com
para que coincida con su dominio y pruebe bien.
También para su información, aquí está la misma técnica utilizando un sytnax más simple:
ApacheRewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php [NC]
RewriteRule ^index\.php$ https://example.com/ [R=301,L]
Esto hace lo mismo que la técnica anterior, aunque no es tan robusta. Tarea asignada: compare y comprenda las diferencias, explique por qué el primer método es mejor para uso general.
Eliminar www e index.php
Aquí hay un ejemplo de cómo combinar las técnicas anteriores:
# remove www and index.php
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule (.*) https://example.com/\ [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.php\ HTTP/
RewriteRule ^(([^/]+/)*)index\.php$ https://example.com/\ [R=301,L]
</IfModule>
Para requerir el www
, simplemente intercambie las dos primeras líneas con las de la técnica «require-www», arriba.
Bono: Drop-in www Canonicalización
Algunos de mis lectores han preguntado sobre una versión plug-&-play del fragmento www/canonical. Aquí tienes..
Drop-in eliminar www
Aquí hay varias técnicas para eliminar el prefijo www
.
Drop-in remove www (Método 1):
# remove www
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.(.*)$ [NC]
RewriteRule (.*) https://%2.%3/\ [R=301,L]
</IfModule>
Drop-in remove www (Método 2):
# remove www
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule (.*) https://%1/\ [R=301,L]
</IfModule>
Drop-in remove www (Método 3):
# remove www
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
</IfModule>
Drop-in requiere www
Aquí hay varias técnicas para requerir el prefijo www
.
Drop-in requiere www (Método 1)
# require www
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^www\.(.*)\.(.*)$ [NC]
RewriteRule (.*) https://%1.%2/\ [R=301,L]
</IfModule>
Drop-in requiere www (Método 2):
# require www
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule (.*) https://www.%{HTTP_HOST}/\ [R=301,L]
</IfModule>
Drop-in requiere www (Método 3):
# require www
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteCond %{HTTP_HOST} (.+)$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
Lo único que necesita para verificar cualquiera de estas técnicas es el protocolo HTTP, de modo que cambie https
a http
si es necesario.
Notas
Si obtiene un error de servidor 500 para cualquiera de las técnicas anteriores, intente reemplazar [R=301,L]
con [R,L]
, debería hacer el truco.
Algunas de estas técnicas pueden no ser compatibles en sitios donde se utilizan subdominios. Es posible que se requiera una ligera modificación para obtener mejores resultados.
Antes de usar cualquiera de las técnicas directas, asegúrese de que su estructura de URL emplee un solo dominio de nivel superior (TLD), como .com
. No utilice las técnicas de entrega directa para TLD plurales, como .co.uk
. Entonces, si su sitio está sacudiendo un TLD plural, está bien, simplemente use uno de los métodos manuales proporcionados en la primera mitad de este tutorial.
También recuerde probar bien antes de poner en marcha 🙂
[…] Un servidor web. Este tutorial vamos a usar XAMPP, en el siguiente tutorial explicamos como instalar un servidor web con…
[…] está buscando crear proyectos web con Python, Cómo iniciar rápidamente un proyecto Django y una aplicación Django es un buen lugar…
[…] crear un entorno virtual denominado .venv (o el nombre que desee) con el siguiente […]
[…] ver más sobre el comando cat puede ver en nuestros articulos: https://blog.pachahosting.com/como-usar-el-comando-cat-para-escribir-un-texto-en-un-archivo/ y […]
[…] Cómo usar el comando Cat para escribir un texto en un archivo ◀Previous Post Next Post Coming Soon...▶ […]