【发布时间】:2016-02-23 05:28:33
【问题描述】:
这是一个 Azure WebApp web.config 问题。 我想将所有非 HTTPS 请求重定向到相同的 url,但使用 HTTPS,基本上用 HTTPS 替换 HTTP。 但如果 url 包含以下字符串,则不会:“/config/add_new_user?login=xxx&w=1”。
这是我在 web-config 部分中的块。
<rule name="Force HTTPS" stopProcessing="true">
<match url="(\/config\/add_new_user\?login=license_wizard\&w=1)" negate="true" />
<conditions>
<add input="{HTTPS}" pattern="OFF" />
</conditions>
<action type="Rewrite" url="public/redirect.html" />
</rule>
但我收到错误 500.19 - 配置文件不是格式正确的 XML
我使用https://regex101.com/#javascript 来计算正则表达式并使用不同的网址进行测试。它似乎可以解决,表达命中文本。 所以 negate="true" 应该反转语句,所以只有没有给定字符串的 url 被匹配并因此被重写。
哦,顺便说一句,web.config xml 接缝没问题,因为当我将正则表达式改回原来的时候,网站就可以工作了。
所以这行得通:
<match url="(.*)" />
但事实并非如此:
<match url="(\/config\/add_new_user\?login=license_wizard\&w=1)" negate="true" />
【问题讨论】:
-
我认为
&amp;不需要转义,或者在这种情况下是有效的转义序列,请尝试(\/config\/add_new_user\?login=license_wizard&w=1) -
我尝试了转义和不转义,结果相同:/ 但我认为你是对的,不需要转义。
-
您可能还应该使用 PCRE 风格而不是 Javascript regex101.com/#pcre
-
也许
&amp;应该是&amp;,因为它在 XML 中。
标签: regex web-config