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

时间:2013-09-05 16:42:24

标签: php apache .htaccess redirect

我有一个叫做的子菜单,让我们说:

cloud.mygizmo.com

但当有人导航到此网址时,我希望他们真正转到:

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

3 个答案:

答案 0 :(得分:1)

你做不到。重定向不会那样。

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

答案 1 :(得分: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]

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

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

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]

答案 2 :(得分:1)

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

编辑:查看蓝色主机是否允许您的控制面板中的停放域名(也称为蒙面转发)。我想这就是你想要的。