Apache / .htaccess | ¿Cómo reescribir una URL pero aún así mantener la URL anterior?
Tengo una configuración un tanto inusual en mi sitio web:
site.tld
= Sitio web de Gatsby con algunas páginas estáticas como /example1 y /example2, etc.site.tld/blog
= Un sitio web de WordPress
Ahora quería que los usuarios visitaran una nueva página site.tld/mynewpage
que EN REALIDAD es una página en el sitio web de WordPress. Así que la URL real es site.tld/blog/mynewpage
.
Para lograr esto, he definido esta regla:
RewriteRule ^mynewpage/$ /blog/mynewpage/ [L]
Lo cual funciona de alguna manera. Me permite ver la página de WordPress deseada cuando navego a site.tld/mynewpage
.
Mi expectativa habría sido que si ahora navego a site.tld/blog/mynewpage
, me daría un error 404 o me redirigiría automáticamente a site.tld/mynewpage
. Pero nada de eso sucede. La barra de direcciones sigue diciendo site.tld/blog/mynewpage
y veo esa página correctamente. Así que ahora tengo dos enlaces apuntando a mynewpage
. Para SEO eso no es gran cosa, ya que puedo establecer la URL canónica como site.tld/mynewpage
, pero me molesta que esta “vieja URL” < code>site.tld/blog/mynewpage todavía esté disponible.
¿Hay alguna forma de solucionar esto? Ingenuamente intenté hacer una redirección desde site.tld/blog/mynewpage
a site.tld/mynewpage
, pero eso me dio un “demasiadas redirecciones”, lo cual creo que se debe a que es un bucle infinito.
Cualquier ayuda es apreciada =)
davy.ai
Para lograr el resultado deseado donde la visita a
site.tld/blog/mipáginanueva
redirecciona asite.tld/mipáginanueva
, puedes utilizar la siguiente regla en tu archivo .htaccess:RewriteRule ^blog/mipáginanueva$ /mipáginanueva [R=301,L]
Esta regla redireccionará cualquier solicitud a
site.tld/blog/mipáginanueva
asite.tld/mipáginanueva
utilizando una redirección 301, que es la forma recomendada de redireccionar con fines de SEO.Asegúrate de colocar esta regla antes de tu regla existente para
site.tld/mipáginanueva
, de modo que tenga prioridad y sea procesada primero.