htaccess重定向到外部网站而不更改地址栏


htaccess redirect to external website without changing address bar

我有一个子符号叫做,假设:

cloud.mygizmo.com

但是当有人导航到此 URL 时,我希望他们实际转到:

11.22.33.44/cloud

它位于与mygizmo.com完全不同的主机上,无法移动。

在我的.htaccess里,我有这个:

RewriteEngine on
# Use PHP5.4 as default
AddHandler application/x-httpd-php54 .php
RewriteCond %{HTTP_HOST} ^cloud'.mygizmo'.com$ [OR]
RewriteCond %{HTTP_HOST} ^www'.cloud'.mygizmo'.com$
RewriteRule ^/?$ "http':'/'/11'.22'.33'44'/cloud" [L]

这确实会执行重定向,但它仍然会更改用户浏览器中的地址栏。

我该如何做到这一点,以便如果用户导航到cloud.mygizmo.com他们实际上转到11.22.33.44/cloud但地址栏仍然显示cloud.mygizmo.com

你不能。重定向不是那样工作的。

您可以改为代理数据(这将效率低下并增加带宽成本)。

如果已安装mod_proxy,则可以使用 P 标志代表浏览器反向代理:

RewriteEngine on
# Use PHP5.4 as default
AddHandler application/x-httpd-php54 .php
RewriteCond %{HTTP_HOST} ^cloud'.mygizmo'.com$ [OR]
RewriteCond %{HTTP_HOST} ^www'.cloud'.mygizmo'.com$
RewriteRule ^/?$ "http':'/'/11'.22'.33'44'/cloud" [L,P]

您也可以使用 ProxyPassProxyPassMatch 反向代理,但这些只能在虚拟主机/服务器配置中起作用。

cloud.mygizmo.com/www.cloud.mygizmo.com幻影中,您可以说:

ProxyPass / http://11.22.33.44/cloud

然后,对cloud.mygizmo.com的任何请求都会代理到http://11.22.33.44/cloud主机。

请注意,ProxyPass的工作方式与Redirect类似,它将路径节点//cloud链接在一起。因此,如果有人要去:

http://cloud.mygizmo.com/foo/bar

他们会被反向代理到:

http://11.22.33.44/cloud/foo/bar

如果这不是您想要的,请使用ProxyPassMatch

ProxyPassMatch ^/$ http://11.22.33.44/cloud

或者,如果您希望重写规则以相同的方式运行,则需要捕获请求 URI 并使用反向引用将其传递给目标:

RewriteRule ^/?(.*)$ http://11.22.33.44/cloud/$1 [L,P]
可能

不是理想的解决方案,但您可以构建一个几乎是一个巨大的 iframe 的页面并将内容加载到 iframe 中......

编辑:查看蓝色主机是否允许控制面板中的托管域(又名屏蔽转发)。我想这就是你想要的。