Полагаю, вы тоже хотите
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] ....