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

时间:2011-12-07 18:16:43

标签: iis url-rewriting iis-7.5 trailing-slash

IIS通过添加尾部斜杠对目录执行URL清理。从IIS 6中查看此旧文档: IIS generates courtesy redirect when folder without trailing slash is requested

  1. 为什么?意图是否仍然相关?
  2. 有任何安全隐患吗?
  3. 如何禁用它以使URL重写规则“RemoveTrailingSlashRule”
  4. 使用URL Rewrite 2在IIS 7.5下添加规则时,该规则将不会应用于目录(使用IsDirectory)和文件夹(使用IsFolder)。

    请参阅此警告添加规则以追加或删除尾部斜杠符号: See this warning on Add a rule to append or remove the trailing slash symbol

    这将创建RemoveTrailingSlashRule1: Edit Inbound Rule RemoveTrailingSlashRule1

1 个答案:

答案 0 :(得分:5)

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

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

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

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

  
      
  1. 有任何安全隐患吗?
  2.   

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

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

  
      
  1. 如何禁用它以使URL重写规则“RemoveTrailingSlashRule”
  2.   

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

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

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