我正在我的网站中创建友好链接,但我遇到了问题。我写了这个,但只有第一行代码正常工作,我不知道为什么:
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
加载不同的页面,如果与普通链接一起使用,它的工作正常。
答案 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]+