IIS URL重写强制尾部正斜杠不使用404
我正试图让IIS URL重写模块在我的URL上强制使用前斜杠,以便将对mysite.com/bla的请求转换为mysite.com/bla/ 我正在使用如下所示的规则,这是IIS URL重写向导针对这种情况设置的规则,并且一切正常,但仅当文件存在时。一旦出现404情况,请求的末尾就会附加一个正斜杠IIS URL重写强制尾部正斜杠不使用404,iis,url-rewriting,url-rewrite-module,Iis,Url Rewriting,Url Rewrite Module,我正试图让IIS URL重写模块在我的URL上强制使用前斜杠,以便将对mysite.com/bla的请求转换为mysite.com/bla/ 我正在使用如下所示的规则,这是IIS URL重写向导针对这种情况设置的规则,并且一切正常,但仅当文件存在时。一旦出现404情况,请求的末尾就会附加一个正斜杠 <rule name="Add trailing slash" stopProcessing="true"> <match url="(.*[^/])$" /> <
<rule name="Add trailing slash" 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>
使用上述规则,会发生以下情况:
- www.mysite.com/bla-重定向至www.mysite.com/bla/(我只想 (需要)
- www.mysite.com/bla/-保持原样(正是我想要的 (需要)
- www.mysite.com/bla/myimg.jpg只要myimg.jpg存在,就保持不变
- www.mysite.com/bla/myimg.jpg-如果myimg.jpg不存在,则重定向至www.mysite.com/bla/myimg.jpg/
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
因此,当您请求一个不存在的文件时,规则将触发
如果一个资源是404,我只希望它是404,就这么简单
<> >重写模块首先尝试重定向路径,因为它不考虑请求文件或文件夹,所以它试图到达一条路径。路线不存在,所以你最终会得到404
第二,为什么我们既有规则说如果它不是一个文件又有规则
如果不是目录
因为如果您请求
www.mysite.com/bla/myimg.jpg
,您可能希望显示bla/myimg.jpg
,而不是将bla/myimg.jpg
视为路由。目录也是如此。为了增加这里的混乱,IIS有一个称为“礼貌重定向”的东西,它会自动在文件夹中添加一个尾随斜杠,如下所示:--所以我怀疑在前三种情况下,此规则不会触发,而您只是看到IIS的默认行为。。。