
Algo que se ve muy habitual en webs como prestashop que arroja .php o webs por defecto hechas en Astro que se ven con el .html,
Esta es una de las preguntas que más me hacen en consultorías y en los office hours. Y tiene sentido: cuando ves URLs como ejemplo.com/contacto.php o ejemplo.com/servicios.html, parece que estás viendo una web de los años 2000. ¿Penaliza Google esto? ¿Deberías invertir tiempo en cambiarlo?
La respuesta corta: no afecta al posicionamiento, solo a la imagen de marca.
Pero como siempre en SEO, hay matices. Vamos a verlo en detalle.
John Mueller, el portavoz más visible de Google en temas de Search, ha respondido a esta pregunta tantas veces que Barry Schwartz (Search Engine Roundtable) dice que ha perdido la cuenta.
La confirmación más reciente es de octubre de 2025, cuando Mueller respondió en Reddit:
"Doesn't matter. Also, no extension is fine. (The whole thing is historical, very few people host with static files nowadays.)"
Y en un vídeo oficial de Google Search Central de 2017 (que sigue siendo válido):
"Whether your URLs end with .html, .php, .asp, or just have words in them, doesn't really matter to Google. All of these URLs can show up in search in the same way."
Esto significa que estas URLs son equivalentes para Google:
ejemplo.com/contactoejemplo.com/contacto.htmlejemplo.com/contacto.phpejemplo.com/contacto.aspSi no afecta al SEO, ¿por qué tantos clientes me preguntan por esto? Por varias razones legítimas:
Una URL como tuempresa.com/servicios transmite modernidad y limpieza. Una URL como tuempresa.com/servicios.asp puede transmitir (injustamente) que la web está desactualizada o que la empresa no invierte en tecnología.
Sin extensión, las URLs son más fáciles de dictar por teléfono, escribir en tarjetas de visita o recordar. Cada carácter cuenta.
Si cambias de tecnología (de PHP a Node.js, por ejemplo), tus URLs no delatan qué hay detrás. Esto es más una cuestión de arquitectura que de SEO.
Muchos CMS modernos como WordPress ya generan URLs sin extensión por defecto. Si tienes una web híbrida con algunas páginas .html y otras sin extensión, puede quedar inconsistente.
Aquí viene lo importante. Mueller también advierte:
"If you need to change your URLs [...] keep in mind that this change would be a restructuring of your website. You would need to redirect the old URLs to the new ones. This kind of change can take quite a bit of time to be reprocessed."
Es decir, quitar las extensiones implica:
Mi recomendación: si tu web lleva años funcionando bien con extensiones .php o .html, y no tienes una razón de peso (rebranding, cambio de tecnología), déjalo como está. El coste-beneficio no compensa.
Hay escenarios donde sí vale la pena:
Si decides hacer el cambio, aquí tienes las configuraciones. Importante: prueba siempre en un entorno de prueba antes de tocar producción.
Para quitar la extensión .php:
RewriteEngine On
# Redirige URLs con .php a sin extensión (301)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]
# Internamente sirve el archivo .php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
Para .html, cambia las referencias de .php por .html.
Si quieres manejar múltiples extensiones a la vez:
RewriteEngine On
# Redirige .php y .html a URLs limpias
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.(php|html) [NC]
RewriteRule ^ %1 [R=301,L]
# Primero intenta .php, luego .html
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [L]
En NGINX la configuración es diferente y, como siempre, depende un poco de tu setup específico:
server {
index index.html index.php;
# Redirige URLs con extensión a URLs limpias
location ~ ^(.+)\.(php|html)$ {
return 301 $1;
}
# Intenta servir archivo, directorio, o con extensión
location / {
try_files $uri $uri/ $uri.html $uri.php?$query_string;
}
# Procesa PHP (ajusta según tu configuración de PHP-FPM)
location ~ \.php$ {
internal;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Después de implementar, verifica:
/pagina.php redirige 301 a /pagina/pagina devuelve 200 y muestra el contenido correctoPuedes usar las herramientas de desarrollador del navegador o curl para verificar los códigos de respuesta.
Mueller mencionó una excepción interesante:
"The only SEO effect I can think of is accidental file extensions that confuse things. Eg a web page that ends in '.gif' probably will have trouble being picked up for web-search."
Es decir, si por algún error de configuración tu página PHP tiene extensión .gif o .jpg, Google podría confundirse y tratarla como imagen en lugar de página web. Es un caso extremo, pero ilustra que la coherencia importa.
Ya que estamos hablando de URLs, aprovecho para recordar qué factores sí tienen impacto real en SEO:
/categoria/subcategoria/producto ayudan a Google a entender tu arquitectura.?id=123&cat=456 complica el crawling.Para profundizar en todos estos aspectos, tengo un artículo completo sobre sintaxis de URLs y su impacto en SEO.
Te falta mi máster. Accede a una formación avanzada que te permitirá aplicar e implementar SEO en cualquier tipo de WEB
¡Accede al Máster de SEO Técnico!