我正在尝试从domain.com/user/12345
重定向到domain.com/user?id=12345
,从domain.com/user/12345/profile
重定向到domain.com/user/profile?id=12345
。
我在.htaccess中写了这条规则:
RewriteRule ^user/([0-9]*)(/.*)?$ user$2?id=$1 [L,QSA]
适用于domain.com/user/12345/profile
,但domain.com/user/12345
未重定向。
我也尝试过这种最简单的形式:
RewriteRule ^user/([0-9]*)$ user?id=$1 [L,QSA]
我在http://htaccess.madewithlove.be/进行了测试,似乎工作正常。
¿我的错误是什么? ¿我该怎么做?
更新
我在此文件中的下一个规则会从domain.com/user
重写为domain.com/user.php
,依此类推。如果未定义先前的规则,则会从domain.com/user/12345
重写为domain.com/user/12345.php
,但如果定义了先前的规则,则不会重写此内容。
这是否意味着有任何类型或转换跳过第二条规则或有任何类型的错误停止规则验证?
答案 0 :(得分:0)
我找到了解决方案。我不知道为什么它在一个案例中运作良好而在另一个案例中却没有,但我忘记了斜线,所以它试图重写为user?id=12345
而不是/user?id=12345
。
所以规则必须像这样:
RewriteRule ^user/([0-9]*)(/.*)?$ /user$2?id=$1 [L,QSA]