【XAMPP】【Apache】將多個domain 導向到同一個網域

我有兩個網域 yuyuGoal.net 與 yuyuGoal.com
希望今天不管連哪一個,最終都會導到 yuyuGoal.com
如此有助於SEO累積同一個網域的流量


2025更新:
在 NameSilo 或傳統 DNS provider 嘗試設 "yuyugoal.net CNAME yuyugoal.com" 仍會出錯!

但目前已知,Cloudflare、Route53、還有DNSPod 等高階 DNS 供應商,他們做了額外的功能,可提供alias 支援!加了「智能代理」功能,繞過協議限制,讓管理更方便!!
在這些高級供應商中,設置 "yuyugoal.net CNAME yuyugoal.com" 可以正常運行!背後會幫使用者做CNAME Flattening、ALIAS來達成

名詞定義

首先要來點枯燥一點的
解釋一些名詞,定義網路上可能有看沒有懂的詞彙
網路上都會流傳著這種圖來解釋,但其實會讓人誤解




現在先遺忘上面那張圖

假設我註冊了一個網域叫作 www.example.com

頂級網域 Top Level Domain (TLD): com 
二級網域 Second Level Domain (SLD): example 


對TLD來說,他可以設置 aaa.com、bbb.com...
對SLD來說,他可以設置 aaa.example.com、bbb.example.com...


所以 aaa.com、bbb.com 這些名稱雖然叫做SLD,但是是由TLD掌管





針對這個模糊的問題:Second-Level Domain可以用CNAME嗎?
答案是,可以!
example.com 當然可以讓 aaa.com.example 使用CNAME record


繼續的問題:Top-Level Domain可以用CNAME嗎?
答案是,不行!
com 不能讓 com.example 使用CNAME record





搞懂TLD跟SLD之後,繼續延伸
Root Domain、Top Level Domain兩者的定義不同
根網域Root Domain是域名體系的最頂層,站在第零層,而非第一層。會以 `.` 一個點的符號代表


www.example.com. 
Root Domain為上方最右側的紅色那個點,通常會被省略

所以網域正確來說在結尾處都要加個點`.`


1. 假設我註冊了一個網域叫作 www.example.com.

根網域 Root Domain: . 
頂級網域 Top Level Domain (TLD): .com 
二級網域 Second Level Domain (SLD): .example 
子網域 SubDomain: xxx.www.example.com. yyy.www.example.com. ... 


2. 假設我註冊了一個網域叫作 example.com.

根網域 Root Domain: . 
頂級網域 Top Level Domain (TLD): .com 
二級網域 Second Level Domain (SLD): .example 
子網域 SubDomain: www.example.com. yyy.example.com.




這些都了解之後,再來做接下來的設定~



在HOSTNAME的那格位置上可以嘗試
1. 留空白,代表 DomainRoot
2. `@` (與留空白同樣意思)
3. `*` (通配符,代表所有子域名)

域名DNS設定



如果註冊了 yuyugoal.net.
只能讓 www.yuyugoal.net CNAME yuyugoal.com
而無法讓 yuyugoal.net 也CNAME yuyugoal.com
因為掛在TLD底下的域名,只能透過設成A導到IPv4
無法設定成CANME(掛在SLD底下的才能)

否則會出現以下錯誤,也根本無法解決

There were problem(s) with your request:
  • yuyugoal.net for CNAME record also has NS record(s)
  • yuyugoal.net for CNAME record also has SOA record(s)
Please make applicable changes and try again.



最終設定

此設定達成以下跳轉
yuyugoal.net => yuyugoal.com
docs.yuyugoal.net => docs.yuyugoal.com
doc.yuyugoal.net => docs.yuyugoal.com
www.yuyugoal.net => yuyugoal.com


yuyugoal.com

原網站,四個都用A




yuyugoal.net

第一格(域名本身)只能用A,而無法用CNAME
其他都用CNAME









Apache伺服器端設定

Redirect Parament 的話就不用設定 Document Root 這一行了


httpd-vhosts.conf
```
<VirtualHost *:80>
    DocumentRoot "C:\www\yuyuGoal\website"
    ServerName yuyuGoal.com
    ServerAlias yuyuGoal.com www.yuyuGoal.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:\www\yuyuGoal\docs"
    ServerName docs.yuyuGoal.com
    ServerAlias docs.yuyuGoal.com doc.yuyuGoal.com
</VirtualHost>

<VirtualHost *:80>
    ServerName yuyuGoal.net
    ServerAlias yuyuGoal.net www.yuyuGoal.net
    Redirect permanent / http://yuyuGoal.com/
</VirtualHost>

<VirtualHost *:80>
    ServerName docs.yuyuGoal.net
    ServerAlias docs.yuyuGoal.net doc.yuyuGoal.net
    Redirect permanent / http://docs.yuyuGoal.com/
</VirtualHost>
```


httpd-ssl.conf
```
<VirtualHost *:443>
    DocumentRoot "C:\www\yuyuGoal\website"
    ServerName yuyuGoal.com:443
    ServerAlias yuyuGoal.com www.yuyuGoal.com
    SSLEngine on
    ...
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "C:\www\yuyuGoal\docs"
    ServerName docs.yuyuGoal.com:443
    ServerAlias doc.yuyuGoal.com docs.yuyuGoal.com
    SSLEngine on
    ...
</VirtualHost>

<VirtualHost *:443>
    ServerName yuyuGoal.net:443
    ServerAlias yuyuGoal.net www.yuyuGoal.net
    Redirect permanent / https://yuyuGoal.com/
    SSLEngine on
    ...
</VirtualHost>

<VirtualHost *:443>
    ServerName docs.yuyuGoal.net:443
    ServerAlias doc.yuyuGoal.net docs.yuyuGoal.net
    Redirect permanent / https://docs.yuyuGoal.com/
    SSLEngine on
    ...
</VirtualHost>
```


沒有留言:

張貼留言