Tengo un sitio web que se creó originalmente con ASP clásico. Hace aproximadamente un año se reescribió en PHP. Esto hizo que las extensiones de archivo cambiaran y algunas páginas se movieron a nuevas ubicaciones dentro del sitio web. Naturalmente, realizamos redireccionamientos 301 de las URL antiguas a las nuevas URL para que sus usuarios y motores de búsqueda pudieran encontrar sus nuevas ubicaciones. Esto funciona bien
También creamos una herramienta que permite al propietario del sitio crear sus propias URL pequeñas que redirigirán a una página con las variables de seguimiento de campañas de Google Analytics incluidas en la URL para que puedan realizar un seguimiento de la campaña y ver cómo funciona.
El problema que tengo es que las reglas de seguimiento de campañas entran en conflicto con las redirecciones 301 y evitan que las redirecciones funcionen.
Aquí está el código de seguimiento de la campaña:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]
Como puede ver, verifica si existe un archivo y, si no es así, redirige a un script de seguimiento (tracking.php) que luego toma el código de seguimiento y lo redirige a la URL correcta con el código de campaña de Google Analytics en la consulta cuerda.
Ese código hace que las reglas como esta fallen:
redirect 301 /about.asp /about.php
redirect 301 /capabilities.asp /capabilities.php
redirect 301 /capacitors.asp /capacitors.php
Tiene sentido que esto no funcione en conjunto, como dicen las reglas de seguimiento, "si no se encuentra un archivo, redirija a tracking.php". Lo que necesito es que los redireccionamientos 301 se ejecuten primero, y si ninguno de ellos coincide, redirige al script de seguimiento. Colocar las reglas de seguimiento debajo de las redirecciones 301 no cambia los resultados.
¿Se puede hacer esto a través de .htaccess? ¿O tendré que modificar la secuencia de comandos de seguimiento para que, si no se encuentra una campaña, verifique si el ID de la campaña es realmente una página antigua que necesita ser redirigida y luego redirige el 301 desde allí?
[R=301,L]
después de cada redirección es lo que está causando mi problema. Déjame intentarlo y te diré lo que sucede.*.asp -> *.php
comodín funciona muy bien. Las reglas individuales para las páginas que no son una transición directa y tienen cadenas de consulta son problemáticas. Pero este parece ser el camino correcto. Si no puedo resolver esa parte, comenzaré una nueva pregunta al respecto.Revertiría la redirección y la dejaría como estaba originalmente. Redireccione su NUEVO sitio a su antiguo sitio. Su sitio VIEJO probablemente ya se esté beneficiando de los vínculos de retroceso, la antigüedad del sitio web y el SEO. Sería una pena perder eso solo para reemplazarlo con un sitio más nuevo con un rango de página más bajo. Google castiga las redirecciones. Su NUEVO sitio todavía no tendrá SEO, así que es mejor usar una redirección en ese :)
fuente