перенаправить в подкаталог И из подкаталога - PullRequest
0 голосов
/ 30 марта 2010

У меня проблема с перенаправлением 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.

большое спасибо за любые указатели.

1 Ответ

1 голос
/ 07 апреля 2010

Проверьте строку HTTP-запроса в THE_REQUEST вместо:

RewriteCond %{THE_REQUEST} ^GET\ /net[/? ]
RewriteRule ^net($|/(.*)) /$2 [L,R=301]
...