我试图让 URLRewriter 强制将 HTTP 请求重定向到 HTTPS。供应商文档似乎没有涵盖它。
我知道以下参数会引发错误,但可以说明我要完成的工作:
<rewriter>
<if url="http://www.domain.com/test*">
<rewrite url="http://www.domain.com/test*" to="https://www.domain.com/test*" />
</if>
</rewriter>
我试图让 URLRewriter 强制将 HTTP 请求重定向到 HTTPS。供应商文档似乎没有涵盖它。
我知道以下参数会引发错误,但可以说明我要完成的工作:
<rewriter>
<if url="http://www.domain.com/test*">
<rewrite url="http://www.domain.com/test*" to="https://www.domain.com/test*" />
</if>
</rewriter>
确切地知道抛出了什么错误以确保我在这里走正确的道路会很有用,但我认为您在使用 * 字符时要使用 . 字符(如果您打算将任何非安全 URL 重定向到安全版本,则可能是 .+)
看起来原始海报想要做的事情是这样的:
<rewriter>
<if url="http://.*">
<rewrite url="http://([^/]*)(.*)" to="https://$1$2" />
</if>
</rewriter>
但是,这似乎根本不起作用——我不确定它在幕后做了什么来理解为什么。正则表达式似乎是正确的。我发现这个网站对解决其中一些问题非常有帮助: http ://regexhero.net/tester/
我终于找到了使它起作用的魔法咒语,来自:
https://webmasters.stackexchange.com/a/31318
<rewriter>
<if header="HTTPS" match="^OFF$">
<redirect url="(.*)" to="https://yourdomain.com$1"/>
</if>
</rewriter>