Я пытаюсь использовать https и префикс www. Однако мое правило не полностью работает. Вот мое правило:Web.config URL rewrite - force www prefix и https
<rewrite>
<rules>
<clear />
<rule name="Force https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://www.mydomain.co.uk/{R:1}" redirectType="Permanent" />
</rule>
<rule name="Force www" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="localhost" negate="true" />
<add input="{HTTP_HOST}" pattern="www.mydomain.co.uk" negate="true" />
</conditions>
<action type="Redirect" url="https://www.mydomain.co.uk/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
- Он работает для перенаправления HTTP на HTTPS.
- это работает, если я иду в https://mydomain.co.uk (перенаправляет к https://www.mydomain.co.uk)
- однако это не будет работать, если я иду в https://mydomain.co.uk/blah/whatever
Пожалуйста, может кто-нибудь посоветовать? Благодарю.
Спасибо. Зачем использовать 'stopProcessing =" true "'? Разве это не предотвращает обработку следующих правил? –
Да, да. Правило «_A может иметь флаг StopProcessing включен. Когда этот флаг включен, это означает, что последующие правила не будут обработаны, а URL-адрес, созданный этим правилом, будет передан в конвейер запросов IIS (если это согласовано с правилом). По умолчанию этот флаг отключен. «См. Https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference – VDWWD
Но это будет означать если в запросе отсутствовали как префикс WWW, так и протокол HTTPS. Префикс WWW будет добавлен, но HTTPS не будет, потому что больше правил не будет обработано. –