![结合 Apache ServerAlias 和 301 重定向](https://linux22.com/image/696025/%E7%BB%93%E5%90%88%20Apache%20ServerAlias%20%E5%92%8C%20301%20%E9%87%8D%E5%AE%9A%E5%90%91.png)
我参考过这个问题但我不确定我是否清楚在这种情况下这是如何运作的:
我有一个客户,他有两个品牌,目前他们的线上业务如下:
Brand A (site 1) Brand B (site 2)
--- ---
site 1 pages site 2 pages
现在,他们已经建立了一个新网站,整合了两个网站的内容,将两个品牌统一为一个:
Brand Unified (site 3)
---
site 3 pages
显然,在更新每个域的 A 记录后,我希望为每个原始网站设置 301 重定向。但是,新网站是自定义 WordPress 主题,而 WP 只允许每个安装一个域。这让我陷入一种境地:我可以将来自品牌 A 的原始 TLD 指定为 WordPress 中的网站 URL,然后让品牌 B 域重定向到 A。
我想我会在 Apache 站点配置中使用这样的服务器块:
<VirtualHost *:80>
ServerName site1.com #site1.com now points directly here
ServerAlias site2.com #site2.com points directly but redirects
ServerAdmin [email protected]
DocumentRoot /var/www/newsite
因此,假设此配置没有问题,如果我尝试为 site1 和 site2 链接实现 301 重定向,会发生什么情况?具体来说,由于 site2.com 现在被列为 site1.com 的别名,我是否仍可以在目录.htaccess
中的文件中有效地进行 301 重定向/var/www/newsite/
,或者 ServerAlias 是否会干扰这一点?我想知道它是否会被别名化回 site1.com,因此 301 规则不会触发?
答案1
如果您能够配置 Apache conf,为什么要让情况复杂化并将重定向(或任何东西)放入.htaccess
文件中?您似乎将 site2.com 分配给 /var/www/newsite 只是为了使用.htaccess
,没有其他目的。我会保持简单,一切都在一个地方:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName site1.com
DocumentRoot /var/www/newsite
</VirtualHost>
<VirtualHost *:80>
ServerName site2.com
# Specifically mapped redirects
Redirect permanent /foo/ http://site1.com/new-foo/
# Root redirect (if no other cases above match)
Redirect permanent / http://site1.com/
</VirtualHost>