完成雲主機 LAMP 架設後,下一步就是將 DNS 指向新空間。
www.website.com 可以進入網站
website.com 也能進入網站
伺服器 IP 也能直接打開網站
等於一個網站有多個入口。
這會造成:
搜尋引擎收錄混亂(www / non-www / IP 多份內容)
SEO 分數被分散
資料表網址寫入不一致(不同格式混用)
因此,我們需要透過 VirtualHost 與 301 Redirect,將所有入口統一導向單一正式網址(Canonical Domain)。
一、建立 HTTP VirtualHost(入口收斂)
sudo nano /etc/apache2/sites-available/default_host.conf
www.website.com 可以進入網站
website.com 也能進入網站
伺服器 IP 也能直接打開網站
等於一個網站有多個入口。
這會造成:
搜尋引擎收錄混亂(www / non-www / IP 多份內容)
SEO 分數被分散
資料表網址寫入不一致(不同格式混用)
因此,我們需要透過 VirtualHost 與 301 Redirect,將所有入口統一導向單一正式網址(Canonical Domain)。
一、建立 HTTP VirtualHost(入口收斂)
sudo nano /etc/apache2/sites-available/default_host.conf
<VirtualHost *:80>
ServerName website.com
ServerAlias www.website.com +你的IP例如:123.123.12.33
RewriteEngine On
RewriteRule ^ https://website.com%{REQUEST_URI} [L,R=301]
</VirtualHost>
請將 website.com 改為自己的網域。正確流程(重要)
先建立VirtualHost:80
↓
完成網站建置
↓
申請SSL(自建443)
↓
再來做VirtualHost:443
二、SSL(HTTPS 443)設定
(通常由 certbot 自動產生)(需要先建立SSL後再處理443的設定)(沒有SSL根本不存在443問題)
sudo a2ensite default_host.conf
sudo a2ensite default_host-le-ssl.conf
sudo systemctl reload apache2
四、(如遇異常時檢查)預設站衝突問題
若網站出現跳轉異常或設定未生效,可檢查:
ls -l /etc/apache2/sites-enabled/
若存在以下預設站:
000-default.conf
default-ssl.conf
可能會造成 VirtualHost 搶流量或設定失效,可視情況關閉:
sudo a2dissite 000-default.conf
sudo a2dissite default-ssl.conf
sudo systemctl restart apache2
五、測試結果
http://website.com
http://www.website.com
http://你的IP
https://www.website.com
全部應轉向 → https://website.com
完成效果:
網址正規化(Canonical)
SEO 不分散
資料庫網址一致
IP 不直接暴露
※ 重點:301 收斂在 80,443 僅處理網域統一,避免無限轉向。
以上為工作心得記錄,有需要的朋友參考看看。
二、SSL(HTTPS 443)設定
(通常由 certbot 自動產生)(需要先建立SSL後再處理443的設定)(沒有SSL根本不存在443問題)
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName website.com
ServerAlias www.website.com
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^website\.com$ [NC]
RewriteRule ^ https://website.com%{REQUEST_URI} [L,R=301]
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/website.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/website.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
三、啟用 VirtualHostsudo a2ensite default_host.conf
sudo a2ensite default_host-le-ssl.conf
sudo systemctl reload apache2
四、(如遇異常時檢查)預設站衝突問題
若網站出現跳轉異常或設定未生效,可檢查:
ls -l /etc/apache2/sites-enabled/
若存在以下預設站:
000-default.conf
default-ssl.conf
可能會造成 VirtualHost 搶流量或設定失效,可視情況關閉:
sudo a2dissite 000-default.conf
sudo a2dissite default-ssl.conf
sudo systemctl restart apache2
五、測試結果
http://website.com
http://www.website.com
http://你的IP
https://www.website.com
全部應轉向 → https://website.com
完成效果:
網址正規化(Canonical)
SEO 不分散
資料庫網址一致
IP 不直接暴露
※ 重點:301 收斂在 80,443 僅處理網域統一,避免無限轉向。
工作心得撰寫:徐嘉裕 Neil hsu
留言
張貼留言