我似乎迷失在一大堆代码中。我有以下.htaccess代码:
RewriteRule ^user/(.*)$ index.php?p=user/$1 [L]
RewriteRule ^user/(.*)/(.*)$ index.php?p=user/$1&id=$2 [L]
现在,我有一个名为profile.php的文件,里面我使用$ _GET来获取ID。但是当我转到/ user / profile / 1时,它什么也没做。当我没有身份证去那里时,我的脚本有效。有人可以帮助我,告诉我我做错了什么吗?
谢谢。抱歉这个令人困惑的消息。
答案 0 :(得分:0)
尝试以下两条规则:
RewriteRule ^user/([^/]+)/([^/]+)/?$ index.php?p=user/$1&id=$2 [L,QSA]
RewriteRule ^user/([^/]+)/?$ index.php?p=user/$1 [L,QSA]
<强>解释强>
因为你的正则表达式错误,你的规则无效的原因。您首先将^user/(.*)$
.*
的{{1}}与/user/
之后的所有相匹配,因此您的第二条规则永远不会触发,$_GET['id']
始终为空。
通过将其更改为[^/]+
,我的规则仅匹配,直到找到下一个/
,因此两个规则共存良好。
QSA
只是保存现有查询字符串的好标志。