【问题标题】:mod_rewrite in httpd.conf not working (but does in .htaccess)httpd.conf 中的 mod_rewrite 不起作用(但在 .htaccess 中起作用)
【发布时间】:2013-07-18 02:00:06
【问题描述】:

我在两台不同的服务器上有一个非常相似的设置(工作的一个是在 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 添加为具有完整 documentroot 等的虚拟主机,然后将相同的重写添加到该 documentroot 中的 .htaccess,则重定向工作正常。

如果我启用重写日志记录,那么我可以看到正在处理的 .htaccess 版本,但 httpd.conf 中没有。我一生都无法弄清楚哪里出了问题/缺少了什么:(

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

    您的 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]
    

    【讨论】:

    • 不幸的是不是这样,因为每个虚拟主机都配置有和没有 www。子域前缀。我已经更新了上面的帖子来纠正这个问题:)
    猜你喜欢
    • 2012-04-17
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2013-05-10
    相关资源
    最近更新 更多