2009-10-24 61 views
0

在httpd.conf文件中我有AllowOverride FileInfo。在我的网络服务器的顶级.htaccess文件与所有其他文件,我有这个:Apache Url重写不起作用

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

但它不起作用。 mywebsite/downloads和mywebsite/downloads /总是给404找不到。任何想法为什么?谢谢。 (mywebsite/index.php?page = downloads does work)。

而且我每次更改它时都会重新启动apache。

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

它的罚款,如果我只是做RewriteEngine On,但如果我做任何事情(RewriteBase,重写规则),Web浏览器支出年龄试图加载并最终给这个错误:

Safari can’t open the page “ http://mk12.gotdns.com/ ” because the server where this page is located isn’t responding.

任何人有任何的想法是什么错误?

编辑:我可以使,例如,禁止重写的CSS文件,它的工作原理,但任何从下载到index.php?page = downloads的规则使服务器不响应(见上文) ,什么页面都没关系,网站根本不会加载。有任何想法吗..?

+0

当某些重写规则看起来不错但不起作用时,我最后添加了一个[R]。 如果重定向没有发生,则第一部分不正确。 如果重定向发生但不如预期,第二部分不正确 – w35l3y 2009-10-24 20:35:53

+0

我添加了R标志,它仍然是404错误。 – mk12 2009-10-24 20:39:19

+0

它说'下载'是404还是'索引'? – random 2009-10-25 01:57:10

回答

0

它工作了!我把代码放在了错误的地方。它在httpd.conf中,但在最后。把它移到<目录>和它的好。谢谢你的帮助!

编辑:另外,我发现它不会工作,如果旗帜是这样的:[L, NC]。它必须是[L,NC](不含空格)。

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

0

有你累加在前面的斜线“下载”像下面

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

编辑:试试下面的代码:

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

它没有工作。 – mk12 2009-10-24 20:42:32

+0

尝试彻底删除“^ /”部分(仅用于测试当然)。如果确实有效,那么您可能必须将基本路径设置为“/”。 – BYK 2009-10-24 20:46:05

+0

我已经试过了。 – mk12 2009-10-24 20:53:40

1

调试重写规则最好的办法是使重写日志记录,以便您可以查看发生了什么问题。

+0

在/ private/var/log/apache2/error_log文件中,我得到:[[Sat Oct 24 16:42:05 2009] [error] [client 10.0.1.1]文件不存在:/ Library/WebServer /文件/ downloads'。 – mk12 2009-10-24 20:44:52

+0

这意味着你的模式不匹配。 – BYK 2009-10-24 20:50:17

0

我会尝试删除下载后的尾部斜线和问号,以及index.php之前的斜线。

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

我假设最后一段时间是一个错字? – mk12 2009-10-25 00:44:55

+0

仍然无法正常工作。 – mk12 2009-10-25 00:46:47