为什么Apache删除多个斜杠?

时间:2012-01-02 10:05:01

标签: regex apache .htaccess mod-rewrite

这个RewriteRule

RewriteRule ^test/(.*)$ test.php?url=$1

在此网址

mysite.com/test//one///two////three///

给我这个结果

$1=url='one/two/three/'

我正在使用easyphp,如果它很重要,我想知道为什么Apache在内部删除多个斜杠而不重定向到更正的URL?以及如何禁用或添加重定向到此行为?

提前感谢

1 个答案:

答案 0 :(得分:8)

似乎有多个斜线违反标准。正如this post中指出的那样,RFC 1630说:

  

PATH

     

URI的其余部分以冒号取决于冒号        方案。路径的解释方式取决于         正在使用的协议。但是,当它包含斜杠时,这些         ust意味着一个等级结构。

///并不意味着层次结构 - 您有空文件夹名称。从那以后我猜想Apache的行为是设计的。 (使用多个斜杠也不是一个好主意,因为结果将是无效的URL)。

我会改用不同的角色。