使用.htaccess将备用域重写到主域

时间:2015-09-02 20:30:19

标签: apache .htaccess mod-rewrite

我们有一个英语和西班牙语版本的网站,每个版本都在不同的域名上。我们还为每种语言提供了一些备用域,我们希望将其重定向到该语言的主域。

具体做法是:

  • estadiosfutbol.net / ...,estadiosfutbol.org / ...和estadiosfutbol.info / ...都应该重定向到https://estadiosfutbol.com/ ......
  • worldfootballstadiums.com / ...,worldfootballstadiums.info / ...,worldfootballstadiums.org / ...和worldfootballstadiums.net / ...应全部重定向到https://worldstadiums.football/ ......

我正在努力改写重写规则,所以任何帮助都会受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

有两种方法可以做到这一点。第一个是最简单的,但并不总是实用的。

第一种方法

此方法不需要HTACCESS文件。在Apache服务器配置中,您只需为要处理的每个域添加ServerAliases。 (您必须确保所有域都指向同一台计算机)

代码

NameVirtualHost *:443

<VirtualHost *:443>
ServerName estadiosfutbol.com
ServerAlias estadiosfutbol.info estadiosfutbol.net estadiosfutbol.org
DocumentRoot /www/domain
</VirtualHost>

<VirtualHost *:443>
ServerName worldstadiums.football
ServerAlias worldfootballstadiums.com worldfootballstadiums.net worldfootballstadiums.info worldfootballstadiums.org
DocumentRoot /www/otherdomain
</VirtualHost>

注意:只有在用户尝试使用SSL访问网站时,才会重定向。 (例如)如果您希望它重定向来自端口80和端口443的所有流量,则需要创建单独的虚拟主机并使用第二种方法来实现重定向。

第二种方法

第二种方式稍微复杂一点,但几乎适用于所有情况。为了使其正常工作,需要执行两个主要步骤:

  1. 确保您使用的任何服务器软件都设置为查找所有域。服务器必须有一个正在监听每个域的VirtualHost(Apache),以便下一步做任何事情。

  2. 在每个域的根目录下创建一个类似于此的.HTACCESS文件:

  3. 代码

    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} !estadiosfutbol.net$ [NC]
    RewriteRule ^(.*)$ https://estadiosfutbol.com/$1 [L,R=301]
    

    注意:您需要将每个域的第三行更改为要重写的域(例如estadiosfutbol.net/,estadiosfutbol.org/和estadiosfutbol.info)

    注意:更改第四行是单独域所需的全部内容。