0

我在两台不同的服务器上有一个非常相似的设置(工作的一个是在 Centos 6 上安装的 Plesk,另一个是在 Centos 6 上非常简单的 LAMP 设置)并且我在普通 LAMP 服务器上遇到了 mod_rewrite 的问题。

我已经比较了两台服务器上的 httpd.conf(和相关的包含),并且两者(出于所有意图和目的)都是相同的。

在 plesk 服务器上,我的 httpd.conf 文件中有以下内容,它将http://stats.domain.com重定向到http://www.domain.com/webstat/,这是一种享受;

<VirtualHost *:80>
 ServerName stats
 ServerAlias stats.*
 UseCanonicalName Off
 RewriteEngine On
 RewriteCond %{HTTP_HOST} stats\.(.*) [NC]
 RewriteRule ^.*$ http://www.%1/webstat/ [L,R=301]
</VirtualHost>

在 LAMP 服务器上,我的 httpd.conf 文件中有以下内容,该文件应该将http://stats.domain.com重定向到http://www.domain.com/awstats/awstats.pl?config=domain.com

<VirtualHost *:80>
 ServerName stats
 ServerAlias stats.* 
 UseCanonicalName Off
 RewriteEngine On
 RewriteCond %{HTTP_HOST} stats\.(.*) [NC]
 RewriteRule ^$ http://www.%1/awstats/awstats.pl?config=%1 [L,R=301]
</VirtualHost>

但是,这在 httpd.conf 文件中不起作用。如果我将 stats.domain.com 添加为具有完整文档根等的虚拟主机,然后将相同的重写添加到该文档根中的 .htaccess,则重定向工作正常。

如果我启用重写日志记录,那么我可以看到正在处理的 .htaccess 版本,但 httpd.conf 没有任何内容。我终其一生都无法找出错误/遗漏的地方:(

4

1 回答 1

0

您的 LAMP 服务器的重写规则只是放入 domain.com。

RewriteCond %{HTTP_HOST} stats\.(.*) [NC]
RewriteRule ^$ http://%1/awstats/awstats.pl?config=%1 [L,R=301]

您上面的评论说它应该是 www,更像是第一条规则。

RewriteRule ^.*$ http://www.%1/awstats/awstats.pl?config=%1 [L,R=301]
于 2013-07-18T22:28:46.393 回答