重定向到其他域名但保留已输入的域名

32

在互联网上查找了约一个小时后,我没有找到我的问题的答案。所以我可能使用了错误的关键词或者我想要的不可能实现。

我想要的是:
我有多个带有不同扩展名的域名,例如:

  • mydomain.be
  • mydomain.nl

现在我想要的是将mydomain.be重定向到mydomain.nl。我在互联网上找到了解决方法,并且如下所示,需要使用.htaccess:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain.be$ [OR]
RewriteCond %{HTTP_HOST} ^www.mydomain.be$
RewriteRule (.*)$ http://www.mydomain.nl/$1 [R=301,L]

使用这段代码后,当您键入mydomain.be时,您将被重定向到mydomain.nl。但是地址栏中的URL也会更改为mydomain.nl。我想要的是保留地址栏中的URL为mydomain.be。

因此,需要实现:

  • 保持URL为mydomain.be
  • 显示mydomain.nl的内容

如何操作?

2个回答

23

可以通过mod_rewrite来完成,但请确保在Apache的httpd.conf中启用了mod_proxy。一旦完成,启用mod_rewrite和.htaccess通过 httpd.conf ,然后将此代码放置在 .htaccess 下的 DOCUMENT_ROOT 目录中:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.be$ [NC]
RewriteRule ^ http://www.mydomain.nl%{REQUEST_URI} [L,NE,P]

注意标记P,该标记用于处理代理请求。

了解有关 mod_rewrite 中 P 标记的更多信息


1
太棒了,谢谢你,让我开心了。不过我能在同一个 .htaccess 文件中使用多个 URL 吗?例如只需添加更多的 'RewriteCond' 和 'RewriteRule'? - NeoVe
@anubhava:需要修改的htaccess是DomainA还是DomainB的?因为我刚刚创建了一个DomainA的子域名,将其指向了DomainB的相同IP地址,所以subDomainA没有网站,也没有文件夹。这种情况可能吗? - Ponzio Pilato
@PonzioPilato:这个规则应该仍然适用于将subDomainA更改为subDomainB。subDomainA可能没有内容,但在VirtualHost中会定义一些DocumentRoot - anubhava
@anubhava 这不会成为一个安全问题吗?如果我理解正确的话,这就像在我的网站URL上展示另一个网站(我不拥有的)的内容? - Manish Pareek

4
另一种不需要烦恼处理.htaccess的选择是将两个域名指向同一个文档根目录,或者将其中一个域名设置为另一个域名的别名,具体取决于您如何配置Apache。但这样做有缺点:

  • 如果您的内容管理系统使用绝对URL,那么点击链接上的mydomain.nl的用户将被重定向到mydomain.be域名(例如,WordPress会这样做)。
  • 搜索引擎会惩罚这种行为,将您的搜索结果排名降低。至少谷歌会这样做,他们在博客文章中提到了重复内容。不确定竞争对手是否也会这样做。

一个示例Apache配置可能如下:

<VirtualHost *:80>
    ServerName mydomain.nl
    ServerAlias mydomain.be

    DocumentRoot /var/www/mydomain.nl/htdocs
</VirtualHost>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接