2009-11-27 69 views
0

我有一个.htaccess文件作为测试如下:mod_rewrite的工作在.htaccess文件而不是在apache2.conf

RewriteEngine on 
RewriteRule ^(.*)$ /backend/$1

可正常工作。我能够在apache2.conf中使用以下方法进行重写日志记录:

<IfModule mod_proxy.c> 
    RewriteLog "/tmp/REWRITE.log" 
    RewriteLogLevel 9 
</IfModule>

日志文件已创建并按预期方式记录调试信息。但是,当我删除.htaccess文件时,请按如下所示更改apache2.conf指令,然后重新启动apache以在全局范围内执行相同操作,但不起作用。

<IfModule mod_proxy.c> 
    RewriteLog "/tmp/REWRITE.log" 
    RewriteLogLevel 9 
    RewriteEngine on 
    RewriteRule ^(.*)$ /backend/$1 
</IfModule>

我在Ubuntu上使用Apache/2.0.55。

帮助!

+0

不是*之外的任何进一步的诊断这是行不通的*? – Gumbo 2009-11-29 20:01:24

回答

0

你试过吗?

RewriteEngine on 
    RewriteRule ^(.*)$ /backend/$1 

<IfModule mod_proxy.c> 
    RewriteLog "/tmp/REWRITE.log" 
    RewriteLogLevel 9 

</IfModule> 

因为这样,我能够做的重写,但登录didnt因此工作了问题mod_proxy.c

0

你有没有考虑过在之前的之前的任何其他重写指令转向RewriteEngine?

+0

好主意,我没有考虑它。然而,我把'RewriteEngine on'移到了'RewriteLog'/tmp/REWRITE.log'之前,然后重新启动了apache,结果仍然是一样的:( – Lightbeard 2009-11-27 17:31:00

0

您的RewriteRule指令是否包含在特定的服务器定义中?你有虚拟服务器吗?

我问这个问题的原因是,你说这适用于目录特定的.htaccess文件;虽然官方文档说RewriteRule可以应用于服务器配置,虚拟主机,目录,.htaccess。

+0

感谢您的帮助,它是一个虚拟服务器,它是一个每月支付的VPS(Xen)。当我把它放在'/ var/www/public/ /。htaccess'中时,RewriteRule的工作方式如第一个例子所示,它不起作用当我把它放在'/ etc/apache2/apache2.conf'中时(即使我先打开了RewriteEngine),目标不是使用.htaccess文件 - 我想定义一些RewriteRules全球范围内 – Lightbeard 2009-11-27 22:26:07

+0

对不起,我不能提供更多的帮助,有很多这些东西都是反复试验的,很可能RewriteRule并不是很容易在全球范围内应用,但是如果你把它放在您的顶级目录的块是否可能适用于所有子目录.. – 2009-11-28 01:05:33

相关问题