Нещодавно я встановив сертифікат SSL для веб-сайту на веб-сервері IIS 7.5. Тоді я встановлюю правило перезапису URL-адреси, щоб переписати HTTP на HTTPS. Поки майже все працює, крім однієї речі. Якщо я введіть домен, а потім / language like / en, то перезапис URL-адреси не працює. Веб-сайт працює на Drupal 7. Так, наприклад, якщо я заходжу на сторінку контактів, наприклад www.domain.com/contact, тоді Drupal переписує URL на www.domain.com/language(like EN від FR та ін.). ) / contact, мова виявляється мовою браузера. Я думаю, що це перезапис призводить до відмови правила перезапису URL-адреси або ігнорування URL-запиту, таким чином немає перенаправлення HTTP на HTTPS.
Але коли я вперше заходжу на домашню сторінку: www.domain.com, а потім натискаю на кнопки меню, щоб перейти на сторінку контактів, все працює. HTTP переспрямовується на HTTPS. Це тому, що я думаю, що переадресація мови вже зроблена, щоб модуль перезапису URL-адреси міг обробляти новий запит на перезапис URL-адрес.
Це правило, яке я використовую, пробував багато різних колись всіх подібних результатів.
<rule name="HTTP to HTTPS redirect" enabled="false" stopProcessing="true">
<match url="http://(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
</rule>
АБО
<rule name="HTTP to HTTPS redirect2" stopProcessing="true">
<match url="(.*)" />
<!-- Require SSL must be OFF in the site settings -->
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}{REQUEST_URI}" />
</rule>
{R:0}
або {C:0}
отримати найвищий рівень, але ніякого ефекту.
{R:1}
міститься ім'я хоста, тож ваш заголовок Location містить його двічі?