Apache mod_rewrite忽略句点和额外的斜杠

时间:2012-10-08 00:41:42

标签: apache .htaccess mod-rewrite

这是我的.htaccess:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^[0-9]+(/)?$ /hello.php [R=301]

localhost / 123按预期重定向到localhost / hello.php。

但: localhost / 123 ....和localhost //// 123 ////也重定向到localhost / hello.php。

发生了什么事?

1 个答案:

答案 0 :(得分:0)

我无法用句点重现问题。但是,对于斜杠,如果它们不创建层次结构,Apache就会表现得好像只有一个斜杠。因此////123///变为/123/。 (见Stack Overflow - Why is Apache removing multiple slashes)。我建议您将重写更改为以下内容,因为您无需捕获斜杠以供重用。

RewriteRule ^[0-9]+/?$ /hello.php [L,R=301]

如果你决定要一起消除尾随斜杠,那么这也是可能的:

RewriteRule ^[0-9]+$ /hello.php [L,R=301]