【XAMPP】【Apache】設定SubDomain子網域、網址前綴

我有一個 example.com 網域,有著屬於自己的服務

我希望再開另一個 docs.example.com 指到服務的文檔、文件

兩個對應到的前端網站是分開的


這時候就會使用到SubDomain




DNS設定頁

新增docs Hostname

可用A指定到IPv4,也可用CName指到已經綁定好的Domain




甚至在這些都設定完成後
還可以把 doc 前綴指定到 docs前綴

申請SSL憑證

這裡使用certbot申請憑證
certbot certonly --standalone

輸入要申請的域名 ex:  entp.one www.entp.one docs.entp.one doc.entp.one
沒申請的話,若走https會有問題



步驟可參考此篇文章

如果使用購買的SSL


Apache SubDomain 設定

在httpd-ssl.conf 或 httpd-vhosts.conf中

Step 1. 將 httpd-ssl.conf 新增以下

匹配方式有兩種方法


方法1

紅字的地方注意
上方需要讓原域名跟www都進來(否則沒加www會使www會無法匹配到)
下方需要讓doc跟docs都進來(否則沒加doc會使doc無法匹配到)

```
<VirtualHost *:443>
    DocumentRoot "C:\www\entp\website"
    ServerName entp.one:443
    ServerAlias entp.one www.entp.one
    SSLEngine on
    ...
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "C:\www\entp\docs"
    ServerName docs.entp.one:443
    ServerAlias doc.entp.one docs.entp.one
    SSLEngine on
    ...
</VirtualHost>
```






方法2

使用萬用字元 *
不過順序很重要,因為 *entp.one 就符合所有條件規則、不會往底下去了
所以須將這兩個對調,讓docs在上方

```
<VirtualHost *:443>
    DocumentRoot "C:\www\entp\docs"
    ServerName docs.entp.one:443
    ServerAlias doc.entp.one docs.entp.one
    SSLEngine on
    ...
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "C:\www\entp\website"
    ServerName entp.one:443
    ServerAlias *.entp.one
    SSLEngine on
    ...
</VirtualHost>
```




Step 2. httpd-vhosts.conf 則這樣即可
```
<VirtualHost *:80>
    DocumentRoot "C:\www\entp\website"
    ServerName entp.one
    ServerAlias entp.one
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:\www\entp\docs"
    ServerName docs.entp.one
    ServerAlias docs.entp.one
</VirtualHost>
```





ServerName 與 ServerAlias的差異

ServerName 是主機域名名稱,用來辨識自己的 Host, Port
每個虛擬主機都必須要有一個唯一的域名名稱
ex: example.com 


ServerAlias 是延伸出去的Virtual Host名稱
讓ServerAlias打的網址同時就是指定到此ServerName的內容
ex: aaa.example.com、bbb.example.com、*.example2.com 這些都會指到example.com這個資源路徑來
但同時要在DNS設置好,否則根本不會連過來





沒有留言:

張貼留言