Правило перезаписи URL-адреса IIS для https и содержащего путь

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

полученный URL: http://example.com/books/test.css

Мне нужно проверить http: // и / books /, чтобы сформировать правильный URL-адрес ниже.

необходим URL: https://example.com/books/test.css

Запрос http://example.com/book/test.css следует игнорировать.


person Andrew S    schedule 03.06.2015    source источник


Ответы (1)


Вы можете указать узор в элементе <match>:

<rule name="Force HTTPS for /books/" enabled="true">
    <match url="^/books/.*$" ignoreCase="false" />
    <conditions>
        <add input="{HTTPS}" pattern="off" />
    </conditions>
    <action type="Redirect" redirectType="Permanent"
            url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="true"  />
</rule>

или добавив новый <condition>

<rule name="Force HTTPS for /books/" enabled="true">
    <match url="(.*)" ignoreCase="false" />
    <conditions>
        <add input="{HTTPS}" pattern="off" />
        <add input="{REQUEST_URI}" pattern="^/books/.*$" />
    </conditions>
    <action type="Redirect" redirectType="Permanent"
            url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="true"  />
</rule>
person Cyril Durand    schedule 03.06.2015
comment
Спасибо за это. Я остановил свой выбор на втором варианте. Единственное, что мне пришлось добавить, это знак равенства после шаблона в этой строке ‹add input = {REQUEST_URI} pattern ^ / books /.*$ /› - person Andrew S; 03.06.2015
comment
что означает <add input="{HTTPS}" pattern="off" />? Я не знаю правила перезаписи iis, и поэтому я спросил здесь - person Thomas; 24.11.2017