标签: 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?以及如何禁用或添加重定向到此行为?
提前感谢
答案 0 :(得分:8)
似乎有多个斜线违反标准。正如this post中指出的那样,RFC 1630说:
PATH URI的其余部分以冒号取决于冒号 方案。路径的解释方式取决于 正在使用的协议。但是,当它包含斜杠时,这些 ust意味着一个等级结构。
PATH
URI的其余部分以冒号取决于冒号 方案。路径的解释方式取决于 正在使用的协议。但是,当它包含斜杠时,这些 ust意味着一个等级结构。
///并不意味着层次结构 - 您有空文件夹名称。从那以后我猜想Apache的行为是设计的。 (使用多个斜杠也不是一个好主意,因为结果将是无效的URL)。
///
我会改用不同的角色。