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.

¿Fue útil?

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]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top