redirigir al sub-directorio y fuera del subdirectorio
-
23-09-2019 - |
Pregunta
tengo un problema de redirección mod_rewrite no puedo averiguar.
todas las peticiones de un dominio específico llegar "silencio" reescrito en un subdirectorio designado. p.ej. www.mydomain.net/hello.html
recupera el archivo en /net/hello.html
. la siguiente .htaccess (puesto en mi raíz hosting) logra esto perfectamente:
RewriteEngine on
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} 200 # <-- i will need this later. read to the end of the post.
RewriteRule .* - [L]
rewriteCond %{HTTP_HOST} ^www.mydomain.net$
rewriteCond %{REQUEST_URI} !^/net.*$
rewriteRule (.*) /net/$1 [L]
Sin embargo, las direcciones URL directas en este directorio, sin embargo deben redirigir visiblemente con un 301 a la URL sin ese subdirectorio. p.ej. www.mydomain.net/net/hello.html
debe redirigir a www.mydomain.net/hello.html
(que que todavía recupera el archivo en /net/hello.html
). mi archivo .htacces para este (colocado en /net
) desafortunadamente no funciona:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^localhost$
RewriteRule ^(.*) /$1 [R=301,L]
consigo un bucle de redireccionamiento infinitivo a pesar del bloque RewriteCond %{ENV:REDIRECT_STATUS} 200
en el archivo .htaccess de la raíz ... así que lo que está mal?
Por cierto, tengo que usar mod_rewrite, debido a que el sitio está alojado externaly y yo no tienen acceso a las configuraciones de Apache.
Muchas gracias por cualquier punteros.
Solución
Inspeccionar la línea de petición HTTP en < em> THE_REQUEST en su lugar:
RewriteCond %{THE_REQUEST} ^GET\ /net[/? ]
RewriteRule ^net($|/(.*)) /$2 [L,R=301]