“RewriteRule ^([^ /] +)index.php?id = $ 1”发布“索引”而是输入文字

时间:2009-01-11 22:20:58

标签: .htaccess mod-rewrite

如果我通过在url中键入/?id=some_text来执行此操作,则index.php脚本可以正常工作,但如果我执行/some_text则index.php始终接收id以使值“index”。

起初我有RewriteRule ^([^/]+) ?id=$1但是返回了“内部服务器错误”而不是网页,然后我将其更改为RewriteRule ^([az] +)index.php?id = $ 1并且我停止了恢复错误页面但无论我输入什么

,脚本都开始接收“index”作为值

此规则适用于使用MAMP的本地计算机,但当我将其上载到服务器上时,它停止工作。

此文件夹的.htaccess文件仅包含此规则

RewriteEngine on
RewriteRule ^([^/]+) ?id=$1

1 个答案:

答案 0 :(得分:1)

我相信它可能会尝试通过index.php进行递归,因为它似乎符合规则。

尝试:

RewriteEngine On
RewriteCond  %{REQUEST_URI}  !index
RewriteRule ^([^/]+) index.php?id=$1 [L]

RewriteCond是为了确保它不会将规则应用于自身的结果。 [L]是为了确保它不会尝试应用任何其他规则。