【问题标题】:Rewrite spare domains to main domains with .htaccess使用 .htaccess 将备用域重写为主域
【发布时间】:2015-09-02 20:30:19
【问题描述】:
我们的网站有英文版和西班牙文版,分别位于不同的域中。对于每种语言,我们还有一些备用域,我们希望将它们重定向到该语言的主域。
具体来说:
我正在为重写规则而苦苦挣扎,因此我们将不胜感激。
【问题讨论】:
标签:
apache
.htaccess
mod-rewrite
【解决方案1】:
有两种方法可以做到这一点。第一个是最简单的,但并不总是实用的。
第一种方法
此方法不需要 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 的所有流量,则需要创建单独的虚拟主机并使用第二种方法来实现重定向。
第二种方法
第二种方法稍微复杂一些,但几乎适用于所有情况。为了使其正常工作,需要执行两个主要步骤:
确保您使用的任何服务器软件都设置为查找所有域。服务器必须有一个正在监听每个域的 VirtualHost(Apache),以便下一步执行任何操作。
在每个域的根目录下创建一个类似于此的 .HTACCESS 文件:
守则
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !estadiosfutbol.net$ [NC]
RewriteRule ^(.*)$ https://estadiosfutbol.com/$1 [L,R=301]
注意:您需要将每个域的第三行更改为要重写的域(例如 estadiosfutbol.net/、estadiosfutbol.org/ 和 estadiosfutbol.info)
注意:更改第四行是单独域所需的全部内容。