htaccess переписать для подпапки - PullRequest
1 голос
/ 01 февраля 2012

У меня есть файл .htaccess, работает нормально. Но не для /specialsubfolder. http://www.mydomain.com/specialsubfolder/index.php перенаправляет на 401.shtml.

Итак, я изменил .htacces так:

RewriteEngine On
#part I of .htaccess, performed for everything

#stops part II from execution if specialsubfolder
RewriteCond %{REQUEST_URI} "/specialsubfolder/"
RewriteRule (.*) $1 [L]

#part II of .htaccess, performed for everything except specialsubfolder

Работает нормально. Осталась только одна проблема - перенаправить все http для спецпапки в https.

К сожалению, приведенный ниже код не работает (в любом случае перенаправляет на страницу ошибки 401.shtml). Почему?

RewriteEngine On
#part I of .htaccess, performed for everything

#http to https for specialsubfolder
RewriteCond %{REQUEST_URI} "/specialsubfolder/"
RewriteCond %{HTTPS} !=on
RewriteRule ^(specialsubfolder/.*)$ https://www.mydomain.com/$1 [R=301,L]

#stops part II from execution if specialsubfolder
RewriteCond %{REQUEST_URI} "/specialsubfolder/"
RewriteRule (.*) $1 [L]

#part II of .htaccess, performed for everything except specialsubfolder

Спасибо.

1 Ответ

3 голосов
/ 01 февраля 2012

Вы получаете ошибку, потому что ваш код вызывает бесконечный цикл здесь:

RewriteCond %{REQUEST_URI} "/specialsubfolder/"
RewriteRule (.*) $1 [L]

Здесь вы просто захватываете весь REQUEST_URI и пересылаете его в тот же REQUEST_URI.Например, URI, равный /specialsubfolder/foo, будет переадресован на /specialsubfolder/foo, а затем снова и снова такая же пересылка будет повторяться до тех пор, пока Apache mod_rewrite не исчерпает установленный по умолчанию предел рекурсии и не выдаст ошибку.

Однако это легко исправитьМне было трудно понять ваши требования.Не могли бы вы вкратце рассказать мне, чего вы на самом деле пытаетесь достичь, используя правила перезаписи?

...