所以我正在尝试清理我的网站公开发布的URL,这是当前网址的样子: http://pattersoncode.ca/index.php?a=help
但我正试图把它变成 http://pattersoncode.ca/help
我在网上使用了一个mod_rewrite生成器,它给了我这个:
RewriteEngine On
RewriteRule ^([^/]*)$ /?a=$1 [L]
但是这给了我一个内部服务器错误。有什么建议吗?
答案 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。