Принудительное использование HTTPS и предотвращение дублирования URL-адресов с помощью модуля перезаписи URL-адреса IIS7 - PullRequest
3 голосов
/ 16 февраля 2011

Мне нужно заставить каждый запрос https://www.mysite.com (всегда с https и www)

Сайт размещен в GoDaddy, и мне нужно сделать это через IIS7 URL Rewrite Module.

Мне удалось перенаправить HTTPS с помощью следующего кода:

<system.webServer>
        <rewrite>
            <rules>
                <rule name="Canonical Host Name" stopProcessing="true">
                    <match url="(.*)" />

                    <conditions>
                        <add input="{HTTP_HOST}" pattern="^mysite\.com$" />
                    </conditions>

                    <action type="Redirect" url="https://www.mysite.com/{R:1}" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
</system.webServer>

Контрольные примеры

Я полагаю, что условие не выполняется, когда я вхожу на сайт www.mysite.comв браузере, так что нет перенаправления, и страница служит HTTP вместо HTTPS.

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

Спасибо!

1 Ответ

4 голосов
/ 17 февраля 2011

emzero, я думаю, проблема в том, что ваше состояние соответствует только точно mysite.com:

<conditions>
    <add input="{HTTP_HOST}" pattern="^mysite\.com$" />
</conditions>

Обратите внимание на шаблон: ^mysite\.com$.Это говорит на английском языке, что входящий URL должен начинаться с mysite.com и заканчиваться mysite.com, что означает, что www.mysite.com будет не совпадать.

Вместо этого попробуйте этот шаблондопускает опцию www.:

<conditions>
    <add input="{HTTP_HOST}" pattern="^(www\.)?mysite\.com$" />
</conditions>

Счастливого программирования!

...