IIS通过添加尾部斜杠对目录执行URL清理。从IIS 6中查看此旧文档: IIS generates courtesy redirect when folder without trailing slash is requested
使用URL Rewrite 2在IIS 7.5下添加规则时,该规则将不会应用于目录(使用IsDirectory)和文件夹(使用IsFolder)。
请参阅此警告添加规则以追加或删除尾部斜杠符号:
这将创建RemoveTrailingSlashRule1:
答案 0 :(得分:5)
我在这里找到了一个关于子IIS应用程序特定案例的答案:https://stackoverflow.com/a/25817317/292060。儿童应用程序似乎是通常的罪魁祸首,但未在此问题中明确说明。
试图回答这些问题,这是我多年来处理IIS和Microsoft的意见。我没有硬源来引用;其中一些只是直觉。
- 为什么?意图是否仍然相关?
醇>
我认为它源于原始的“默认文档”功能,即index.html。网站希望他们的主页只是域名,然后扩展到子文件夹。通过URL重写,意图不再相关 - 您可以重写您的内容,而宁愿IIS不再使用。通常需要友好的网址,并且没有斜杠(除了域/网站根目录 - 需要有一个斜杠,即使某些浏览器如Chrome变得可爱并隐藏它)。
- 有任何安全隐患吗?
醇>
我认为唯一的安全隐含是原始目录浏览。如果您忘记执行默认文档,并且打开了目录浏览,那么人们可以浏览您的网站文件。据我所知,目录浏览已被长时间禁用为默认设置。
对于任何请求,无论是否尾随斜杠,url是否重写,您的服务器和代码都需要承受错误的请求。这适用于所有情况,而不仅仅是特定于斜杠。 http://xkcd.com/327/
- 如何禁用它以使URL重写规则“RemoveTrailingSlashRule”
醇>
如果问题是子应用程序,我有一个答案:https://stackoverflow.com/a/25817317/292060 摘要是在IIS中:
如果这个问题是针对更普遍的问题,包括常规子文件夹(即使不是子应用程序),请考虑从规则中删除“不是目录”,并且即使它看到目录也要重定向。这可能有效,或者可能会创建一个无限重定向循环,我不确定。