.htaccess在隐藏重定向时重定向到外部URL

时间:2009-11-27 10:23:44

标签: apache .htaccess

我希望能够将指向我的虚拟主机的域重定向到外部域。

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

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

但是,当我访问域名时,我的地址栏中的网址会更改为 http://myexternal.example/site

如何在不更改网址的情况下重定向?

还有另一种解决方法吗?我需要使用frame / iframe吗?

5 个答案:

答案 0 :(得分:8)

比特很久以前,但我会回答那些来谷歌的人(像我一样)。答案很简单:

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

R = 301表示您通过301重定向执行此操作。你不想要那个

答案 1 :(得分:2)

单帧框架集或宽度/高度设置为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>

答案 2 :(得分:1)

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

答案 3 :(得分:0)

其他答案都没有提出这一点。 op正在寻找的是 mod-proxy 。您可以使用mod-rewrite的 P 标记将 domainA 的请求代理到 domainB

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

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

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

答案 4 :(得分:0)

我想提出两种方法,可以在不更改域的情况下将网站重定向到另一个URL。

E 示例1:重定向并保留网址后面的所有内容 第一个选项将在一个URL上显示与您在另一个URL上相同的所有内容。例如,如果您只是将域更改为DomainB.com,但是仍然有大量访问者访问DomainA.com,则可以使用它向他们显示位于新域上的所有现有内容,而不需要更新两个网站。 为此,您将为用户将访问的域修改.htaccess文件,并插入以下代码行: RewriteCond%{HTTP_HOST} ^ DomainA.com RewriteRule ^(。http://DomainB.com/ $ 1 [P] 如果在cPanel中使用文件管理器,请确保您可以选择显示选定的隐藏文件。 上面的重定向有什么作用? 将这一行添加到您的.htaccess文件后,您将可以转到DomainA.com/YourPage,它将显示DomainB.com/YourPage *

中的内容

示例2:将域重定向到特定的url 您可以通过另一种方式进行重定向以显示特定的URL,但也要使域保持不变。如果您希望访问者在访问DomainA.com时要记住一个特定页面,则可以使用以下代码:

RewriteCond%{HTTP_HOST} ^ DomainA.com RewriteRule ^(。http://DomainB.com/PathToPageHere [P] *

*例如,如果您有一个外部博客(例如,blogspot.com上的一个博客,或者是etsy.com上的购物车),并且希望人们访问您的域而不完全托管该域,则可以使用此方法。现在,访问者可以使用您的域访问您的网站,但可以看到外部URL的内容。 示例3重定向IP地址 有时,将有一个将IP地址重定向到特定URL的请求。以下代码显示了如何在.htaccess文件中完成此操作。

将所有IP地址重定向(用IP地址数字替换##)到相同的http://domain_name.com

RewriteCond%{HTTP_HOST} ^ ##。##。##。## RewriteRule(。http://domain_name.com/ $ 1 [R = 301,L]