.htaccess RewriteEngine不适用于辅助GET

时间:2016-05-22 00:10:46

标签: php .htaccess

我正在我的网站中创建友好链接,但我遇到了问题。我写了这个,但只有第一行代码正常工作,我不知道为什么:

RewriteRule ^user/([0-9a-zA-Z]+) user.php?user=$1 [NC,L]
RewriteRule ^user/([0-9a-zA-Z]+)/options user.php?user=$1&options [NC,L]

当我去test.com/user/tom时一切都很好,但是当我尝试test.com/user/tom/options时,它只是在同一页面上。

我有php脚本,应该为不同的$_GET加载不同的页面,如果与普通链接一起使用,它的工作正常。

1 个答案:

答案 0 :(得分:0)

正确的做法是来交换线条。虽然这可以解决您的问题,但它也会将user/tom/foo/bar发送到第一条规则。这样做的原因是因为$没有关闭模式。因此,您的规则应如下所示:

RewriteRule ^user/([0-9a-zA-Z]+)$ user.php?user=$1 [NC,L]
RewriteRule ^user/([0-9a-zA-Z]+)/options$ user.php?user=$1&options [NC,L]
  

提示:如果您还有其他用户页面,则可以通过捕获简化第二条规则以包含不同的细分:

RewriteRule ^user/([0-9a-zA-Z]+)/(options|other-page)$ user.php?user=$1&$2 [NC,L]
     

还要考虑到您使用NC(无案例)标记这一事实,您可以将A-Z放入捕获组。您还可以使用\d作为数字。示例[a-z\d]+