Htaccess重写规则 - 没有尾随斜杠不起作用

时间:2011-08-22 13:47:15

标签: php .htaccess mod-rewrite url-rewriting

所以我有以下重写规则:

RewriteRule ^([a-z0-9_\-]+)(\.php)?$ index.php?page=$1 [NC,L,QSA]
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?shop=$1&page=index [NC,L,QSA]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z_-]+).php$ index.php?shop=$1&page=$2 [NC,L,QSA]

一切似乎都很好,如果我去domain.com/shop/然后它工作正常并显示索引。如果我去domain.com/shop/about.php那就完美了。

唯一不起作用的是当我去没有斜杠的domain.com/shop时,它没有显示任何我得到的错误。

有谁知道如何解决这个问题?这可能是添加到我的代码中非常简单的东西,但我似乎无法弄明白。

谢谢!

2 个答案:

答案 0 :(得分:5)

在第二条规则中,在尾部斜杠后添加?

RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?shop=$1&page=index [NC,L,QSA]

这将使尾随/可选

答案 1 :(得分:2)

我通常以/?$结束我的规则,这意味着字符串以一个斜杠或没有shash结尾。