2013-07-14 151 views
1

我想在apache2 conf中写一些重写规则,它们不起作用 以下是我在apache conf中的虚拟主机块。我的操作系统是Ubuntu的12.04服务器版apache2重写规则不起作用

DocumentRoot /var/www/xyz 

    <Directory /> 
      Options FollowSymLinks 
      AllowOverride None 
    </Directory> 
    <Directory /var/www/xyz> 
      Options Indexes FollowSymLinks MultiViews 
      #AllowOverride None 
      AllowOverride All 
      Order allow,deny 
      #Order deny,allow 
      allow from all 
    </Directory> 

我有一些重写规则.htaccess文件如下

ReWriteEngine on 
RewriteRule ^/matchV/(.*) http://host:8080/$1 
RewriteRule ^/other/(.*?)$ /httpdcontent/$1

重写模块与Apache启用。

有人可以告诉我,如果我失去了什么。

感谢,

桑迪普

回答

0

首先,美元符号似乎缺少在第一个规则。 然后,我会建议在“调试”情况下使用[L]。这样,当时只需要修正一条规则。

如果您需要检查重写的方式,您需要查看日志文件/var/log/apache2/error.log和/var/log/apache2/access.log。他们会告诉你服务器试图处理什么URL,以及它如何失败。从这个角度来看,你应该能够看到缺少的东西,或者什么是“太多”。

从我看到的情况来看,我认为它与重写基地有关。您的Web服务器根目录可能位于/ var/www,并且虚拟主机的目录是/ var/www/xyz。我想你可以使用类似修复它...

RewriteBase /xyz 

不管怎么说,编辑配置,并没有停止检查日志。从那里,您将看到服务器尝试处理的URL /文件,并且您应该能够更正它使用的路径。

+0

到底在配置rewritebase的地方? – Sandeep

+0

根据您的覆盖设置,可以在.htaccess文件中完成此操作。 –