.htaccess RewriteOptions Inherit не наследуется - PullRequest
2 голосов
/ 05 октября 2011

Я пытался инерритировать мои правила с помощью RewriteOptions Inerhit , потому что по каким-то причинам правила не наследуются по умолчанию. Возможно, вы захотите узнать, что я на LiteSpeed ​​ сервер.

IP XXX.XX.XX.XX указывает на поддомен , который расположен в ~/public_html/dir/sub/

Этот .htaccess находится в ~/public_html/:

RewriteEngine On
RewriteOptions Inherit

RewriteCond %{HTTP_HOST} ^XXX.XX.XX.XX$ [NC]
RewriteRule ^(.*)$ http://www.example.com [R=301,L]

В ~/public_html/dir/ У меня есть .htaccess:

RewriteEngine On
RewriteOptions Inherit

И в ~/public_html/dir/sub/ .htaccess также выглядит так:

RewriteEngine On
RewriteOptions Inherit

В этом .htaccess также есть код WordPress, который я тоже пытался удалить, но ничего не изменилось.

Я также пытался использовать RewriteOptions Inherit Before, но правила из ~ / public_html / не применяются. Так что, если я иду на IP, меня не перенаправляют.

Кто-нибудь сталкивался с такой проблемой раньше и получил какие-нибудь советы для меня, что я пробую в облаке? Я действительно много занимался поиском, но не смог понять, в чем дело.

1 Ответ

4 голосов
/ 16 августа 2012

Я обнаружил, что унаследованные (в корневой папке) правила анализируются с контекстом подкаталога

/.htaccess
RewriteRule melon http://www.google.com [R,L]
RewriteRule /services/bar http://www.yahoo.com [R,L]

/services/.htaccess
RewriteEngine On
RewriteOptions Inherit
deny from all

http://mydomin.com/services/bar => 403
http://mydomin.com/services/melon => google.com !!!

Возможно, попробуйте использовать более свободную RewriteRule (. *)

Также как RewriteRuleконтекст потерян, попробуйте использовать шаблон перехвата RewriteCond, если вам нужна условная перезапись

RewriteCond %{REQUEST_URI} (/services/.*)
RewriteRule (.*) http://elsewhere.com/%1 
#in place of a basic RewriteRule /services/(.*) http://elsewhere.com/$1 
...