对于子 IIS 应用程序的具体情况,我有一个答案:https ://stackoverflow.com/a/25817317/292060 。子应用程序似乎是通常的罪魁祸首,但在这个问题中没有明确描述。
为了回答这些问题,以下是我多年来与 IIS 和 Microsoft 打交道的意见。我没有确凿的资料可以引用;其中一些只是直觉。
- 为什么?意图仍然相关吗?
我认为它源于原始的“默认文档”功能,即 index.html。网站希望他们的主页只是域,然后扩展到子文件夹。使用 url 重写,意图不再相关 - 您可以重写您内心的内容,并且宁愿 IIS 让路。通常需要友好的 url,并且没有尾部斜杠(域/网站根目录除外 - 需要尾部斜杠,即使某些浏览器(如 Chrome)变得可爱并隐藏它)。
- 有什么安全隐患吗?
我认为唯一的安全隐患是原始目录浏览。如果您忘记创建默认文档,并且目录浏览处于打开状态,那么人们可以浏览您的网站文件。据我所知,目录浏览长期以来一直被禁用为默认设置。
对于任何请求,无论是否使用斜杠,是否重写 url,您的服务器和代码都需要承受不良请求。这适用于所有情况,而不仅仅是特定于斜线。http://xkcd.com/327/
- 如何禁用它以使其与 URL 重写规则“RemoveTrailingSlashRule”一起使用
如果问题是子应用程序,我有一个答案,在这里:https ://stackoverflow.com/a/25817317/292060
摘要是,在 IIS 中:
- 禁用子应用程序的默认文档功能。
- 使用 Url Rewrite,创建一个规则以将空请求重写(而不是重定向)到 default.aspx
如果这个问题是针对更普遍的问题,包括常规子文件夹(即使不是子应用程序),请考虑从规则中删除“不是目录”,并让它即使在看到目录时也能重定向。这可能有效,或者可能会创建一个无限重定向循环,我不确定。