我需要强制每个请求https://www.mysite.com https://www.mysite.com(始终带有 https 和 www)
该网站托管在 GoDaddy 中,我需要通过 IIS7 URL 重写模块来完成此操作。
我已经能够使用以下代码进行 HTTPS 重定向:
<system.webServer>
<rewrite>
<rules>
<rule name="Canonical Host Name" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^mysite\.com$" />
</conditions>
<action type="Redirect" url="https://www.mysite.com/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
测试用例
-
http://mysite.com http://mysite.com -> https://www.mysite.com https://www.mysite.com OK
-
http://www.mysite.com http://www.mysite.com -> https://www.mysite.com https://www.mysite.com不工作
我猜当我在浏览器中输入 www.mysite.com 时,条件不满足,因此没有重定向,页面作为 HTTP 而不是 HTTPS 运行。
我想我只需要修改条件模式,但我几乎没有正则表达式知识,我需要尽快。
Thanks!
emzero,我认为问题是你的条件只精确匹配mysite.com
:
<conditions>
<add input="{HTTP_HOST}" pattern="^mysite\.com$" />
</conditions>
注意模式:^mysite\.com$
。这表示,用英语来说,传入的 URL 必须以mysite.com
并结束于mysite.com
, 意义www.mysite.com
will not进行匹配。
尝试这种模式,它允许一个选项www.
:
<conditions>
<add input="{HTTP_HOST}" pattern="^(www\.)?mysite\.com$" />
</conditions>
快乐编程!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)