Apache Url重写不起作用

时间:2009-10-24 20:27:25

标签: php apache url-rewriting

在httpd.conf文件中,我有AllowOverride FileInfo。在我的网络服务器顶层的.htaccess文件中包含所有其他文件,我有这个:

RewriteEngine On
RewriteRule ^downloads/?$ index.php?page=downloads [L,NC]

但它不起作用。 mywebsite / downloads和mywebsite / downloads /总是给出404找不到。知道为什么吗?谢谢。 (mywebsite / index.php?page = downloads 工作)。

我每次更改时都会重启apache。

当我把上面的代码放在httpd.conf中时,网站根本不会加载,只是空白,永远旋转的safari wheel。

如果我只做RewriteEngine On就好了,但如果我做了其他事情(RewriteBase,RewriteRule),网页浏览器会花费很多时间尝试加载并最终发出此错误:

  

Safari无法打开“http://mk12.gotdns.com/”页面,因为此页面所在的服务器没有响应。

任何人都知道出了什么问题?

编辑:我能够制作例如禁止重写的css文件,并且它可以工作,但是从下载到index.php?page = downloads的任何规则都会使服务器无法响应(见上文),什么页面无关紧要,网站根本不会加载。任何想法..?

4 个答案:

答案 0 :(得分:1)

调试重写规则的最佳方法是启用重写日志记录,以便您可以看到出现了什么问题。

答案 1 :(得分:0)

您是否厌倦了在“下载”前面添加斜杠

RewriteRule ^/downloads/?$ index.php?page=downloads

编辑:请尝试以下代码:

RewriteEngine On
RewriteBase /
RewriteRule ^downloads/?$ /index.php?page=downloads

答案 2 :(得分:0)

我会尝试在下载后删除尾部斜杠和问号,并在index.php之前删除前导斜杠。

RewriteEngine On
RewriteBase /
RewriteRule ^downloads$ index.php?page=downloads.

答案 3 :(得分:0)

工作!!我把代码放在错误的位置。它在httpd.conf中,但最后。将其移至< Directory>它的好处。谢谢你的帮助!

编辑:此外,我发现如果标志是这样的话,它将无效:[L, NC]。它必须是[L,NC](没有空格)。

因此,它不在< Directory“/ Library / WebServer / Documents”>内的两个问题,并且标志之间有空格。希望这将有助于将来的其他人。