reindirizzare in sottodirectory e fuori di sottodirectory
-
23-09-2019 - |
Domanda
ho un problema mod_rewrite reindirizzamento non riesco a capire.
tutte le richieste da uno specifico dominio ottengono "silenziosamente" riscritto in una sottodirectory designata. per esempio. www.mydomain.net/hello.html
recupera il file in /net/hello.html
. il seguente .htaccess (posto nel mio radice hosting) raggiunge questo perfettamente:
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]
Tuttavia, gli URL diretti in questa directory tuttavia dovrebbero visibilmente reindirizzare con un 301 per l'URL senza che sottodirectory. per esempio. www.mydomain.net/net/hello.html
dovrebbe reindirizzare www.mydomain.net/hello.html
(che che ancora recupera il file in /net/hello.html
). il mio file Htacces per questa (posto in /net
) , purtroppo, non funziona:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^localhost$
RewriteRule ^(.*) /$1 [R=301,L]
ottengo un infinito redirect ciclo, nonostante il blocco RewriteCond %{ENV:REDIRECT_STATUS} 200
nel file .htaccess radice ... così che cosa c'è che non va?
A proposito, devo usare mod_rewrite, perché il sito è ospitato l'esterno sia e non ho accesso ai file di configurazione di Apache.
molte grazie per tutti gli indicatori.
Soluzione
HTTP richiesta linea in < em> THE_REQUEST , invece:
RewriteCond %{THE_REQUEST} ^GET\ /net[/? ]
RewriteRule ^net($|/(.*)) /$2 [L,R=301]