htaccess没有读取php文件

时间:2014-01-20 10:01:27

标签: php regex apache .htaccess mod-rewrite

我似乎迷失在一大堆代码中。我有以下.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时,它什么也没做。当我没有身份证去那里时,我的脚本有效。有人可以帮助我,告诉我我做错了什么吗?

谢谢。抱歉这个令人困惑的消息。

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只是保存现有查询字符串的好标志。