Заставить некоторые страницы через HTTPS, а другие - HTTP ... это возможно? - PullRequest
4 голосов
/ 19 ноября 2011

Я действительно застрял на этом ...

По сути, я пытаюсь сделать 2 страницы всегда через SSL с помощью надстройки URLRewrite для IIS. Но мне также нужно заставить все другие страницы использовать HTTP (вздох - не спрашивай).

Но если я заставлю другие страницы использовать HTTP, то при просмотре страницы SSL вы получите предупреждение о безопасности. Я попытался решить эту проблему, проверив, является ли HTTP_REFERER страницей SSL, затем разрешить ее отправку через SSL только для этой страницы. Это не работает, потому что если кто-то щелкнет ссылку на странице SSL, он останется поверх SSL.

Это вообще возможно? ...

Это насколько я дошел до:

<rewrite>
    <rules>
        <rule name="Force HTTPS Login" stopProcessing="true">
            <match url="(.+)login.aspx" />
            <conditions>
                <add input="{HTTPS}" pattern="^OFF$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/{R:0}" redirectType="Permanent" />
        </rule>
        <rule name="Force HTTPS Payments" stopProcessing="true">
            <match url="(.+)payments.aspx" />
            <conditions>
                <add input="{HTTPS}" pattern="^OFF$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/{R:0}" redirectType="Permanent" />
        </rule>
        <rule name="Others Force HTTP" stopProcessing="true">
            <match negate="true" url="((.+)login.aspx|(.+)payments.aspx)" />
            <conditions>
                <add input="{HTTPS}" pattern="^ON$" />
                <add input="{HTTP_REFERER}" negate="true" pattern="(.+)login.aspx" />
                <add input="{HTTP_REFERER}" negate="true" pattern="(.+)payments.aspx" />
            </conditions>
            <action type="Redirect" url="http://{HTTP_HOST}/{R:0}" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

ОБНОВЛЕНИЕ: Нашел эту статью: Перепишите http на https на некоторых страницах, используя только .htaccess . Нет ответа с марта 2010 года ...!

1 Ответ

7 голосов
/ 22 ноября 2011

Итак, в конечном итоге я сделал:

  1. Принудительное использование HTTPS для страниц, которые в нем нуждались.
  2. Принудительное использование всех остальных страниц для HTTP EXCEPT для страниц.) в точке # 1 и папках "/ styles" и "/ images", на которые есть ссылки на этих страницах.

Поскольку страницы используют относительные пути, они автоматически используют стили / изображения по HTTP /HTTPS соответственно.

<rewrite>
    <rules>
        <rule name="Force HTTPS Login" stopProcessing="true">
            <match url="(.*)/login.aspx" />
            <conditions>
                <add input="{HTTPS}" pattern="^OFF$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/{R:0}" redirectType="Permanent" />
        </rule>
        <rule name="Others Force HTTP" stopProcessing="true">
            <match url="(((.*)/login.aspx)|((.*)/styles(.*))|((.*)/images(.*)))" negate="true" />
            <conditions>  
                <add input="{HTTPS}" pattern="^ON$" />
            </conditions>
            <action type="Redirect" url="http://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>
...