Isapi Rewrite: с www на не-www и одновременно с http на https - PullRequest
0 голосов
/ 01 февраля 2011

Я попробовал все это!

это:

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^.*$ https://%1/$1 [R=301,L]

работает, только если я не ставлю http в начале

как заставить это работать: если есть http перенаправление на https если есть перенаправление www на не-www и конечно оба в одно и то же время

http://www.domain.com -> https://domain.com
www.domain.com --> https://domain.com
http://domain.com --> https://domain.com

с каждой подпапкой после и запросом!

1 Ответ

2 голосов
/ 24 июля 2011

Полагаю, вы тоже хотите

https://www.domain.com -> https://domain.com

Вы когда-нибудь работали? У меня проблемы с получением тестового сайта https, чтобы перепроверить это.

В то же время я вижу пару вещей, поэтому попробуйте это вместо этого (предполагается, что isapi_rewrite v3, который, похоже, вы используете):

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^(.*)$ https://%1$1 [NC,R=301]

Это добавляет круглые скобки в RewriteRule, чтобы захватить URL для $ 1.

Тогда косая черта между% 1 $ 1 не нужна, поскольку в начале захвата $ 1 она есть.

Мне нравится использовать NC для нечувствительного к регистру, и правило R является последним правилом, поэтому вам не нужно L для последнего.

EDIT

Я повторно посетил этот ответ, чтобы обновить / прояснить пару второстепенных вопросов в моем первоначальном ответе выше. Это не меняет основного решения, описанного выше, которое заключалось в добавлении скобок для захвата.

Оригинал:

Тогда косая черта между% 1 $ 1 не нужна, поскольку в начале захвата $ 1 она есть.

Это на самом деле зависит от того, где находятся правила и есть ли оператор RewriteBase. Обычные конфигурации с общим хостом не имеют здесь косой черты в правилах, поэтому слеш будет необходим. Если вы не уверены, вы можете попробовать с и без.

Оригинал:

Мне нравится использовать NC для нечувствительного к регистру, и правило R является последним правилом, поэтому вам не нужно L для последнего.

Оказывается, для производительности полезно иметь L с R, как [NC,R=301,L]. Я спросил об этом в Helicon Tech за год до этого вопроса, но забыл:
http://www.helicontech.com/forum/14826-Does_Redirect_need_Last.html
Из их ответа:

... причина, по которой мы используем [L] в правилах перенаправления 301, заключается в том, что перенаправление происходит не немедленно. Даже если правило соответствует, дальнейшие правила будут обрабатываться (проходить), если у вас нет [L] ....

...