.htaccess隐藏redirect时redirect到外部URL

我想能够将指向我的网站主办的域redirect到外部域。

例如,我在.htaccess中有这个:

RewriteCond %{HTTP:Host} ^(?:www\.)?mydomain\.example$ RewriteRule ^(.*)$ http://myexternal.example/site [R=301,NC] 

但是,当我访问域时,我的地址栏中的URL变为http://myexternal.example/site

我如何redirect而不更改url?

有没有其他的方法呢? 我需要使用框架/ iframe吗?

很久以前,但是我会回答那些由Google来到这里的人(像我一样)的问题。 答案很简单:

在你的htaccess中,删除R = 301部分(当然是逗号)。

R = 301意味着你通过301重定向。 你不要那个

可以是单个框架框架,也可以是宽度/高度均设置为100%的iframe。

我不确定在更新版本的HTML中是否支持framsets,但浏览器仍旧能够理解旧版本,但是无论如何,单个iframe是很容易的。

 <html> <head> <title>My Site</title> <style> body { margin: 0; padding: 0; } body, iframe { width: 100%; height: 100%; } iframe { border: 0; } </style> </head> <body> <iframe src="http://example.com" /> </body> </html> 

也许你可以通过改变域名mydomain.net的DNS来链接到myexternal.net。 然后,您必须在外部服务器上使用适当的.htaccess

没有其他答案提出这个建议。 mod正在寻找的是mod-proxy 。 您可以使用mod-rewrite的P标志将请求从您的domainA代理到domainB

 RewriteRule ^(.*)$ http://domainB.com/$1 [P] 

这将内部重定向从domainA到domainB的所有请求。

确保您的服务器上启用了mod-proxy