我在两台不同的服务器上有一个非常相似的设置(工作的一个是在 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 没有任何内容。我终其一生都无法找出错误/遗漏的地方:(