перенаправление в подкаталог И из подкаталога
-
23-09-2019 - |
Вопрос
у меня проблема с перенаправлением mod_rewrite, которую я не могу понять.
все запросы из определенного домена «тихо» перезаписываются в назначенный подкаталог.например www.mydomain.net/hello.html
извлекает файл в /net/hello.html
.следующий .htaccess (размещен в корне моего хостинга) достигает этого отлично:
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]
однако прямые URL-адреса в этот каталог должны явно перенаправляться с кодом 301 на URL-адрес. без этот подкаталог.например www.mydomain.net/net/hello.html
следует перенаправить на www.mydomain.net/hello.html
(который затем все равно извлекает файл в /net/hello.html
).мой файл .htacces для этого (размещено в /net
) к сожалению не работает:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^localhost$
RewriteRule ^(.*) /$1 [R=301,L]
я получаю бесконечный цикл перенаправления, несмотря на RewriteCond %{ENV:REDIRECT_STATUS} 200
заблокировать в корневом файле .htaccess...так что не так?
Кстати, мне нужно использовать mod_rewrite, потому что сайт размещен на внешнем сервере, и у меня нет доступа к конфигурациям Apache.
большое спасибо за любые указатели.
Решение
Осмотрите Строка HTTP-запроса в ЗАПРОС вместо:
RewriteCond %{THE_REQUEST} ^GET\ /net[/? ]
RewriteRule ^net($|/(.*)) /$2 [L,R=301]