我有一个标准网站托pipe在我完全控制的服务器上 – www.domain.com。 我最近为这个域名购买了一个SSL证书,准备接受信用卡,并且希望将所有请求redirect到https://www.domain.com 。 在大多数情况下,我创build的规则(见下文)工作正常 – 如果我inputhttp://www.domain.com它将redirect到https://www.domain.com 。 我遇到的问题是,如果我去一个内部链接,如http://www.domain.com/folder/page.aspx ,我得到一个404,因为唯一的绑定绑定到HTTPS。 我怎样才能做一个redirect规则,说任何请求www.domain.com发送到HTTPS,但保留原来的文件夹/页面结构的要求? 所以,去http://www.domain.com/folder/page.aspx发送到https://www.domain.com/folder/page.aspx 。 我宁愿如果查询string值也保持不变。
这是我目前的重写规则:
<rewrite> <rules> <rule name="Redirect to HTTPS" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="^OFF$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /> </rule> </rules> </rewrite>
我结束了自己解决 – 我做了两个不同的规则(一个重写http://domain.com https://www.domain.com证书链接到)和另一个只是redirect所有的HTTPS请求,似乎是完美的工作。 这里是相关的configuration条目:
<rewrite> <rules> <rule name="CanonicalHostNameRule1"> <match url="(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="^www\.domain\.com$" negate="true" /> </conditions> <action type="Redirect" url="http://www.domain.com/{R:1}" /> </rule> <rule name="Redirect to HTTPS" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="^OFF$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /> </rule> </rules> </rewrite>
如果您使用属性appendUrlTrail =“true” ,如果您在IIS中configurationredirect,我知道您可以带着整个URL。 也许你可以把它追加到 标签。 我不确定它是否正在工作:-)