0

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

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

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

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

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

4

2 回答 2

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。

于 2013-07-09T05:29:16.893 回答
0

尝试这个:

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

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

于 2013-07-09T01:15:36.513 回答