Htaccess重写URL提供500内部服务器错误

时间:2014-08-29 12:19:54

标签: php apache .htaccess mod-rewrite

我正在使用以下代码获取500 Error内容:

RewriteEngine On
RewriteRule ^([^/]*)$ /get.php?action=$1 [L]

重写模块处于活动状态,安全模式关闭且没有问题,

我测试了这段代码:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

但没有改变。

现在该怎么办?

1 个答案:

答案 0 :(得分:3)

我认为问题在于您没有设置任何限制,因此它会循环您的重定向。

这是一个自文件get.php存在以来会停止的示例。

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ /get.php?action=$1 [L]

为了进一步说明,您的示例中会发生的情况是,它会一遍又一遍地重定向到get.php,因为您的规则告诉任何内容不是/内部重定向但是如果文件没有停止退出,并且由于get.php也属于你的正则表达式,它会再次重定向。

我添加的两个条件是,它告诉它停止文件或文件夹是否存在。

如果你使用HTTPD版本2.4+,你可以简单地使用标志[END],如下所示:

RewriteRule ^([^/]*)$ /get.php?action=$1 [END]

告诉服务器停止任何进一步的重定向。