.htaccess:这个规则有什么问题?

时间:2011-09-28 08:38:19

标签: regex .htaccess

你可以告诉我,我的错在哪里吗?

RewriteRule ^project/([^.]+)/$ /wordpress/wp-content/plugins/pr/cp.php?id=$1 [QSA,L]

我每次申请时都会收到内部服务器错误

谢谢

修改

127.0.0.1/wordpress/project/43928fdsf
redirects to
127.0.0.1/wordpress/wp-content/plugins/pr/cp.php?id=43928fdsf

2 个答案:

答案 0 :(得分:0)

你的表情很好,这表明mod_rewrite没有安装/工作/开启。将代码更改为如下所示:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^project/([^.]+)/$ /wordpress/wp-content/plugins/pr/cp.php?id=$1 [QSA,L]
</IfModule>

这应该可以阻止任何500个错误(如果它们确实mod_rewrite相关)。如果您的网址重写仍然无效,那么您没有安装/启用mod_rewrite,在这种情况下您可以install and enable it

更新

你的RewriteRule末尾有一个正斜杠但你想要匹配像127.0.0.1/wordpress/project/43928fdsf这样的URL,它最后没有正斜杠。只需删除正斜杠,规则应匹配:

RewriteRule ^project/([^.]+)$ /wordpress/wp-content/plugins/pr/cp.php?id=$1 [QSA,L]

从那时起,如果您仍然遇到500错误,请尝试打印PHP文件顶部的$_GET变量,然后调用exit()并查看是否仍有问题。这应该有助于缩小问题是PHP还是Apache。

答案 1 :(得分:0)

如果您尝试将单个网址部分与该网络匹配,那么您做错了,因为[^.]+也会匹配/。例如:project/a/b/c/也匹配=&gt; $1将为a/b/c

另一方面,您是否检查了您正在捕捉的群组?如果您通过参数id发送的那些值不会导致cp.php崩溃?