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

IIS通过添加尾部斜杠来在目录上进行URL清理。请参阅IIS 6中的旧文档:
IIS generates courtesy redirect when folder without trailing slash is requested

>为什么?意图是否仍然相关?
>任何安全隐患?
>如何禁用它,使其工作与URL重写规则“RemoveTrailingSlashRule”

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

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

这将创建RemoveTrailingSlashRule1:

我有一个小孩IIS应用程序的具体案例的答案:https://stackoverflow.com/a/25817317/292060.孩子应用程序似乎是通常的罪魁祸首,但这个问题没有明确描述。

要想回答这些问题,这里是我从IIS和Microsoft处理多年的意见。我没有硬的来源引用;其中一些只是直觉。

  1. Why? Is the intent still relevant?

我认为它源于原始的“默认文档”功能,即index.html。网站希望他们的主页只是域名,然后扩展到子文件夹。使用url重写,意图不再相关 – 您可以重写您的心脏的内容,而且IIS会脱离现实。通常需要友好的网址,并且没有尾随的斜线(除了域/网站根目录 – 需要具有尾部斜线,即使像Chrome这样的浏览器也可以隐藏)。

  1. Any security implications?

我认为唯一的安全含义是原始目录浏览。如果你忘记做一个默认的文档,并且目录浏览被打​​开,那么人们可以浏览你的网站文件。据我所知,目录浏览长期被禁用为默认设置。

有任何请求,不管是否斜线,不重写,您的服务器和代码都需要承受不良请求。对于所有情况都是如此,而不仅仅是斜线。 http://xkcd.com/327/

  1. How can I disable it to make this work with a URL Rewrite rule “RemoveTrailingSlashRule”

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

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

如果这个问题是一个更普遍的问题,包括普通子文件夹,即使不是一个小应用程序,也可以考虑从规则中删除“不是目录”,即使看到目录也可以重定向。这可能有效,或者可能会创建一个无限的重定向循环,我不知道。

翻译自:https://stackoverflow.com/questions/8420371/why-does-iis-7-5-adds-a-trailing-slash-on-folders-can-we-disable-courtesy-redir

转载注明原文:为什么IIS 7.5在文件夹上添加尾部斜杠?我们可以禁用一个URL重写规则的礼貌重定向,以删除尾部的斜杠吗?