1

我有一个名为的子域,比方说:

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

4

3 回答 3

1

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

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

于 2013-09-05T16:46:29.577 回答
1

如果您安装了 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]

您也可以使用ProxyPassor进行反向代理,ProxyPassMatch但这些只能在 vhost/server 配置中使用。

cloud.mygizmo.com/ www.cloud.mygizmo.comvhost 你可以说:

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]
于 2013-09-05T16:46:41.420 回答
1

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

编辑:查看 Blue Host 是否在您的控制面板中允许停放域(又名 Masked Forward)。我想这就是你想要的。

于 2013-09-05T17:14:05.990 回答