完成雲主機 LAMP 架設後,下一步就是把 DNS 指向新空間。但此時你可能會遇到一個常見問題:
www.website.com 可以進入網站
website.com 也能進入網站
伺服器 IP 也能直接打開網站
等於一個網站有三個入口。
這會造成:
搜尋引擎收錄混亂(www / non-www / IP 三份內容)
SEO 分數被分散
資料表的網址寫入不一致(有 www、有 IP、沒 www 都混在一起)
因此,我們需要建立 VirtualHost 來統一入口,讓所有訪問都自動轉向單一網址(正規化 Domain),方法如下:
如果看到:
這些都是 預設站 / 舊 SSL 站 / 多餘站,
會跟你的 VirtualHost 搶流量,造成跳轉混亂。
設定完成後:
http://website.com
http://www.website.com
http://你的IP
全部都會 301 轉向 → https://website.com(單一正式網址)此方法是目前各大網站、電商平台、SEO 企業的標準配置。
優點:
網址正規化(避免搜尋引擎重複收錄)
SEO 分數不分散
資料表寫入更乾淨(永遠只有 1 種格式)
安全性更好(IP 不會直接顯示網站)
以上為工作心得記錄,有需要的朋友參考看看。
www.website.com 可以進入網站
website.com 也能進入網站
伺服器 IP 也能直接打開網站
等於一個網站有三個入口。
這會造成:
搜尋引擎收錄混亂(www / non-www / IP 三份內容)
SEO 分數被分散
資料表的網址寫入不一致(有 www、有 IP、沒 www 都混在一起)
因此,我們需要建立 VirtualHost 來統一入口,讓所有訪問都自動轉向單一網址(正規化 Domain),方法如下:
1、建立 VirtualHost 設定檔
sudo nano /etc/apache2/sites-available/default_host.conf
貼上以下內容(http):
<VirtualHost *:80>
ServerName website.com
ServerAlias www.website.com
RewriteEngine On
# 不管是 website.com、www.website.com、或 IP / 其它 Host
# 一律丟到 https://website.com
RewriteRule ^/(.*)$ https://website.com/$1 [L,R=301]
</VirtualHost>
請把 website.com 改成你自己的網址。
如果有啟用SSL功能(https),請再增加443部分
<VirtualHost *:443>
ServerName website.com
ServerAlias www.website.com
RewriteEngine On
DocumentRoot /var/www/html
# 如果有資料夾要轉首頁一併處理
RewriteCond %{REQUEST_URI} ^/folder(/.*)?$ [NC]
RewriteRule ^ https://website.com/ [L,R=301]
# 不管是 website.com、www.website.com、或 IP / 其它 Host
# 一律丟到 https://website.com
RewriteRule ^/(.*)$ https://website.com/$1 [L,R=301]
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/website.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/website.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/website.com/chain.pem
Include /etc/letsencrypt/options-ssl-apache.conf
ErrorLog ${APACHE_LOG_DIR}/neil_error_ssl.log
CustomLog ${APACHE_LOG_DIR}/neil_access_ssl.log combined
</VirtualHost>
2、啟用 VirtualHost
sudo a2ensite default_host.conf
sudo systemctl reload apache2
3、若設定無效,記得檢查是否有其他 vhost 在搶流量
ls -l /etc/apache2/sites-enabled/
如果看到:
000-default.conf
default-ssl.conf
這些都是 預設站 / 舊 SSL 站 / 多餘站,
會跟你的 VirtualHost 搶流量,造成跳轉混亂。
直接關閉
sudo a2dissite default-ssl.conf
sudo a2dissite 000-default.conf
4、重新啟用VirtualHost與重啟 Apache
sudo a2ensite default_host.conf
sudo systemctl restart apache2
設定完成後:
http://website.com
http://www.website.com
http://你的IP
全部都會 301 轉向 → https://website.com(單一正式網址)此方法是目前各大網站、電商平台、SEO 企業的標準配置。
優點:
網址正規化(避免搜尋引擎重複收錄)
SEO 分數不分散
資料表寫入更乾淨(永遠只有 1 種格式)
安全性更好(IP 不會直接顯示網站)
以上為工作心得記錄,有需要的朋友參考看看。
工作心得撰寫:徐嘉裕 Neil hsu
留言
張貼留言