1

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

    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 文件,其中包含一些重写规则,如下所示

重写引擎开启
RewriteRule ^/matchV/(.*) http://host:8080/$1
RewriteRule ^/other/(.*?)$ /httpdcontent/$1

使用 apache 启用了重写模块。

有人可以告诉我是否缺少任何东西。

谢谢,

桑迪普

4

1 回答 1

0

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

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

从我所见,我会说这与重写基础有关。您的网络服务器根目录可能位于 /var/www,而虚拟主机的目录是 /var/www/xyz。我认为你可以使用类似的东西来修复它......

RewriteBase /xyz

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

于 2013-07-14T03:25:09.740 回答