Apache.htaccess重写规则导致主机名无效?

Apache.htaccess重写规则导致主机名无效?,apache,.htaccess,mod-rewrite,mod-proxy,Apache,.htaccess,Mod Rewrite,Mod Proxy,我正在尝试使用mod_代理和mod_重写将所有请求从domain1.com转发到domain2.com,而不重定向。我的.htaccess: RewriteEngine On RewriteCond %{HTTP_HOST} ^domain1.com$ RewriteRule ^(.*)$ http://domain2.com/$1 [L,P] 实际上,这不起作用,因为它产生了一个无效的主机。目标网站domain2.com抱怨无效主机,似乎如下所示: domain1.com, domain1.

我正在尝试使用mod_代理和mod_重写将所有请求从domain1.com转发到domain2.com,而不重定向。我的
.htaccess

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain1.com$
RewriteRule ^(.*)$ http://domain2.com/$1 [L,P]
实际上,这不起作用,因为它产生了一个无效的主机。目标网站
domain2.com
抱怨无效主机,似乎如下所示:

domain1.com, domain1.com
是的,用逗号。任何想法都值得赞赏

如果我转储服务器变量,我会得到
domain1.com、domain1.com
作为server\u NAMEHTTP\u HOST

编辑:我解决了看地图的问题


AFIK将主机值加倍似乎很正常。为什么?因为将代理的IP设置为受信任代理,神奇的事情发生了:主机被“,”分割,最后一个将用作主机,即domain1.com。它可以工作。

将请求从一个域发送到另一个域是
ProxyPass
的一个完美例子

ProxyPreserveHost On
ProxyPass / http://domain2.com
ProxyPassReverse / http://domain2.com

这需要模块
proxy
proxy\u http
,但应该可以解决您的问题。

当您将
p
替换为
R
标志时,它可以工作吗?@anubhava是的,它可以使用301重定向到正确的页面。我想是因为主机没有改变。我稍后会尝试,但我想知道为什么我的第一个示例没有。。。这就是为什么主机是重复的,有什么线索吗?我想不出一种方法来获取
domain1.com,domain1.com
^^^^你在哪里看到的?一些日志条目?是的,在我的日志中。如果你熟悉PHP,这里有一个检查:我的日志显示“domain1,domain1”作为主机。我不是PHP专家,但我非常了解它,可以理解^^^非常混乱……myb你的代码在其他地方出错了?我的意思是,这通常不是偶然发生的:D代码在那一行出错:如果调试主机变量,您将得到以下字符串:
domain1,domain1
,这当然是完全错误的(应该是
domain1
)。apache似乎正在代理发送错误主机的请求。