2011-09-28 70 views
0

可否请您告诉我哪里是我的错?.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 

回答

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相关)。如果您的URL重写仍然不起作用,那么您没有安装/启用mod_rewrite,在这种情况下,您可以使用install and enable it

UPDATE

你必须在最后O对你的重写规则斜杠,但要匹配像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。

+0

谢谢你的答案即时通讯使用mamp和我只是启用mod_rewrite,但我想确保规则将做的工作,如果用户请求http://127.0.0.1/wordpress/project/43928fdsf它会重定向他到http://127.0.0.1/wordpress/wp-content/plugins/pr/cp.php?id=43928fdsf对不对? – trrrrrrm

+0

我已经添加了一些到上面的答案,希望这将有助于 – Clive

+0

非常感谢你的帮助,我尽我所能,但问题似乎来自.htaccess我试图回声你好或只是普通的HTML,仍然是内部服务器错误,而不是在这个网页上所有的wordpress得到内部服务器错误,非常感谢 – trrrrrrm

0

如果您尝试将单个URL部分与该组匹配,那么您做错了,因为[^.]+也将匹配/。例如: - project/a/b/c/也将匹配=>$1a/b/c

在另一方面,你检查你捕捉什么样的群体?如果通过参数id发送的那些值不会导致cp.php崩溃?

+0

感谢您的回答,我想要以下内容127.0.0.1/wordpress/project/43928fdsf它将重定向到127.0.0.1/wordpress/wp-content/plugins/pr/ cp.php?id = 43928fdsf – trrrrrrm

+0

这个规则是要解决这个问题吗? – trrrrrrm

+1

直接在浏览器中调用“127.0.0.1/wordpress/wp-content/plugins/pr/cp.php?id = 43928fdsf”会发生什么?如果它有效,那么规则有问题,如果你看到相同的服务器错误,那么在cp.php页面有问题。 – CyberDude