我想在我们的网站用户遇到没有尾随斜杠的REST路径时重定向。
实施例
http://mywebsite.my/it/products/brand/name => http://mywebsite.my/it/products/brand/name/
http://mywebsite.my/it/products => http://mywebsite.my/it/products/
http://mywebsite.my => http://mywebsite.my/
http://mywebsite.my/it/products/brand/name/code.html => ???
好吧,我不希望重写最后一个,当URL以 .html 结尾时,我不想要尾随斜杠。
我正在使用IIS7的URL重写模块,这是我的“斜线规则”。
<rule name="SLASHFINALE" stopProcessing="true">
<match url="(.*[^/])$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="{R:1}/" />
</rule>
换句话说,如果输入网址与正则表达式匹配(所有不以斜杠结尾),我会重写相同的网址,添加尾部斜杠。
所以我的规则是相同的,但只需添加一点:重写所有URL,除了那些(已经)具有斜杠或者以“结尾的那些。”html“。
我写了这个
(.*(?<!html)[^\/])$
但我无法理解为什么它不起作用。
答案 0 :(得分:0)
IIS Javascript风格的正则表达式解析器不支持条件表达式。
我最终得到了这个:
<match url="(.*[^\.]...[^\/]$)" />
对我来说足够了。