Принудительно Https в приложении ASP.NET, работающем на IIS 7.5 - PullRequest
8 голосов
/ 02 июля 2011

Я использую SSL для всего своего сайта со следующим кодом в файле web.config;

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Redirect HTTP to HTTPS" stopProcessing="true">
                <match url="(.*)"/>
                <conditions>
                    <add input="{HTTPS}" pattern="^OFF$"/>
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/>
            </rule>
        </rules>
    </rewrite>
</system.webServer>

, но я хотел бы заставить ssl только ~/purchase/ и ~/account/ путь и под ними.какой должен быть URL для этого?

ПРИМЕЧАНИЕ Регулярные выражения также подойдут для меня и подстановочные знаки.

Ответы [ 2 ]

6 голосов
/ 04 июля 2011

Вы должны использовать этот шаблон (это будет работать как для /purchase/something, так и для /account/something-else):

^((purchase|account)/.*)$

Вы должны помнить, что в URL не должно быть косой черты /.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Force HTTPS" stopProcessing="true">
                    <match url="^((purchase|account)/.*)$" />
                    <conditions>
                        <add input="{HTTPS}" pattern="^OFF$" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
0 голосов
/ 02 июля 2011

вы бы сделали что-то вроде этого (2 отдельных правила для простоты)

  <match url="/purchase/(.*)"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...