htaccess mod_rewrite内部服务器错误

时间:2013-07-09 01:12:12

标签: .htaccess

所以我正在尝试清理我的网站公开发布的URL,这是当前网址的样子: http://pattersoncode.ca/index.php?a=help

但我正试图把它变成 http://pattersoncode.ca/help

我在网上使用了一个mod_rewrite生成器,它给了我这个:

RewriteEngine On
RewriteRule ^([^/]*)$ /?a=$1 [L]

但是这给了我一个内部服务器错误。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

试试这个:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)$ index.php?a=$1 [L]

它将除真实文件或目录之外的任何URL重写为index.php?a=xyz

答案 1 :(得分:0)

您的规则正在循环,因为^([^/]*)$将匹配index.php(或空白URI)。重写引擎将继续应用所有规则,直到URI停止更改。您可以添加一些条件来防止这种情况:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /?a=$1 [L]

但你确定mod_rewrite已加载吗?如果你把这些标签放在重写的东西周围:

<IfModule mod_rewrite.c>

</IfModule>

您是否仍然收到500服务器错误?如果没有,那么你需要确保在httpd.conf文件中加载mod_rewrite,然后重新启动apache。