我想构建一个匹配多个文件扩展名但忽略查询字符串的IIS网址重写规则。
样品:
/hello.html // Match
/test?qs=world.html // Should not match
/test?qs=world.html&qs2=x // Should not match
以下是我使用的无法正常工作的内容:
<add matchType="Pattern" input="{HTTP_URL}" pattern=".+\.(js|css|less|html|eot|svg|ttf|woff|json|xml)$" negate="true" /> <!--Any url with a dot for file extension-->
答案 0 :(得分:2)
使用\w+
代替.+
.................(\w
相当于[a-zA-Z0-9_]
):< / p>
<add matchType="Pattern" input="{HTTP_URL}" pattern="\w+\.(js|css|less|html|eot|svg|ttf|woff|json|xml)$" negate="true" /> <!--Any url with a dot for file extension-->
如果您想允许其他字符(不包含在\w
中)且仍然忽略查询字符串,则可以使用[^?]+
代替.+
答案 1 :(得分:0)
看看这是否适合你:
我用javascript编写,(我不知道IIS),但正则表达式总是相似的
/^.*\/[\w]+\.[\w]{2,4}$/.test('/test?qs=world.html') // return false
/^.*\/[\w]+\.[\w]{2,4}$/.test('/world.html') // return true
也许它的工作原理如下:
<add matchType="Pattern" input="{HTTP_URL}" pattern="^.*\/[\w]+\.[\w]{2,4}$" negate="true" />
但我把扩展名作为通用方式。如果要对扩展程序进行白盒测试,可以将其替换为:
^.*\/[\w]+\.(js|css|less|html|eot|svg|ttf|woff|json|xml)$
答案 2 :(得分:0)
我认为这可以在IIS中使用:^[^?]*$
将匹配任何不包含?
的字符串。