我有一个子符号叫做,假设:
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]
您也可以使用 ProxyPass
或 ProxyPassMatch
反向代理,但这些只能在虚拟主机/服务器配置中起作用。
在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 中......
编辑:查看蓝色主机是否允许控制面板中的托管域(又名屏蔽转发)。我想这就是你想要的。