为什么IIS 7.5会在文件夹上添加尾部斜杠?我们是否可以禁用礼貌重定向以删除尾部斜杠的URL重写规则?

Mal*_*tre 22 iis url-rewriting iis-7.5 trailing-slash

IIS通过添加尾部斜杠对目录执行URL清理.从IIS 6中查看此旧文档: 当请求没有尾部斜杠的文件夹时,IIS会生成礼貌重定向

  1. 为什么?意图是否仍然相关?
  2. 任何安全隐患?
  3. 如何通过URL重写规则"RemoveTrailingSlashRule"禁用它以使其工作

在IIS 7.5下使用URL Rewrite 2添加规则时,该规则将不会应用于目录(使用IsDirectory)和文件夹(使用IsFolder).

请参阅此警告添加规则以附加或删除尾部斜杠符号: 请参阅此警告添加规则以附加或删除尾部斜杠符号

这将创建RemoveTrailingSlashRule1: 编辑入站规则RemoveTrailingSlashRule1

goo*_*eye 5

我在这里找到了一个关于子IIS应用程序特定案例的答案:https://stackoverflow.com/a/25817317/292060.儿童应用程序似乎是通常的罪魁祸首,但未在此问题中明确说明.

为了回答这些问题,以下是我多年来处理IIS和Microsoft的意见.我没有硬源来引用; 其中一些只是直觉.

  1. 为什么?意图是否仍然相关?

我认为它源于原始的"默认文档"功能,即index.html.网站希望他们的主页只是域名,然后扩展到子文件夹.通过URL重写,意图不再相关 - 您可以重写您的内容,而宁愿IIS不再使用.通常需要友好的URL,并且没有斜杠(除了域/网站根目录 - 需要有一个斜杠,即使某些浏览器如Chrome变得可爱并隐藏它).

  1. 任何安全隐患?

我认为唯一的安全隐含是原始目录浏览.如果您忘记执行默认文档,并且打开了目录浏览,那么人们可以浏览您的网站文件.据我所知,目录浏览已被长时间禁用为默认设置.

对于任何请求,无论是否尾随斜杠,url是否重写,您的服务器和代码都需要承受错误的请求.这适用于所有情况,而不仅仅是特定于斜杠.http://xkcd.com/327/

  1. 如何通过URL重写规则"RemoveTrailingSlashRule"禁用它以使其工作

如果问题是子应用程序,我有一个答案,在这里:https://stackoverflow.com/a/25817317/292060 摘要是,在IIS中:

  • 禁用子应用程序的默认文档功能.
  • 使用Url Rewrite创建一条规则,将空请求重写(不重定向)到default.aspx

如果这个问题是针对更普遍的问题,包括常规子文件夹,即使不是子应用程序,请考虑从规则中删除"不是目录",并且即使它看到目录也要重定向.这可能会起作用,或者可能会创建无限重定向循环,我不确定.