Pergunta

Eu tenho um problema de redirecionamento mod_rewrite que não consigo descobrir.

Todas as solicitações de um domínio específico são reescritas "silenciosamente" em um subdiretório designado. por exemplo www.mydomain.net/hello.html Recupera o arquivo em /net/hello.html. o seguinte .htaccess (colocado na minha raiz de hospedagem) alcança isso perfeitamente:

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]

No entanto, os URLs diretos neste diretório, no entanto, devem redirecionar visivelmente com um 301 para o URL sem Esse subdiretório. por exemplo www.mydomain.net/net/hello.html deve redirecionar www.mydomain.net/hello.html (que ainda recupera o arquivo em /net/hello.html). meu arquivo .htacces para isso (colocado em /net) Infelizmente não funciona:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^localhost$
RewriteRule ^(.*) /$1 [R=301,L]    

eu recebo um loop de redirecionamento infinitivo, apesar do RewriteCond %{ENV:REDIRECT_STATUS} 200 Bloqueie o arquivo root .htaccess ... então o que há de errado?

BTW, eu tenho que usar o MOD_REWRITE, porque o site é hospedado external e não tenho acesso às configurações do Apache.

Muito obrigado por quaisquer indicadores.

Foi útil?

Solução

Inspecione o Linha de solicitação HTTP dentro O PEDIDO em vez de:

RewriteCond %{THE_REQUEST} ^GET\ /net[/? ]
RewriteRule ^net($|/(.*)) /$2 [L,R=301]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top