所以我正在尝试清理我的 URL,为我的网站公开发布做好准备,这就是当前 URL 的样子: http ://pattersoncode.ca/index.php?a=help
但我试图把它变成 http://pattersoncode.ca/help
我在网上使用了一个 mod_rewrite 生成器,它给了我这个:
RewriteEngine On
RewriteRule ^([^/]*)$ /?a=$1 [L]
但这给了我一个内部服务器错误。有什么建议么?
所以我正在尝试清理我的 URL,为我的网站公开发布做好准备,这就是当前 URL 的样子: http ://pattersoncode.ca/index.php?a=help
但我试图把它变成 http://pattersoncode.ca/help
我在网上使用了一个 mod_rewrite 生成器,它给了我这个:
RewriteEngine On
RewriteRule ^([^/]*)$ /?a=$1 [L]
但这给了我一个内部服务器错误。有什么建议么?
您的规则正在循环,因为^([^/]*)$
将匹配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。
尝试这个:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?a=$1 [L]
它将除真实文件或目录之外的任何 URL 重写为index.php?a=xyz
.