php-Htacess重写规则-没有尾部斜杠就无法工作

所以我有以下重写规则:

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时,它没有显示任何错误.

有谁知道如何解决这一问题?添加到我的代码中可能很简单,但是我似乎无法弄清楚.

谢谢!

解决方法:

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

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

这将使尾随/可选

上一篇:php-在网址中隐藏获取变量


下一篇:.htaccess中的HeaderName不使用.php扩展名