—— 把強制 HTTPS 規則拉到 .htaccess 最上面,第一跳就收斂成 301
內容導覽
▋ 這個問題在拖什麼?
你的站不是沒做 HTTPS。是做了以後還多繞一跳。HTTP 先回 307,再補 301,轉址鏈就髒了。爬蟲多跑一步,SEO 訊號也跟著變鈍。
結論先講:不要再找外掛設定。先看 .htaccess。規則順序不對,後面怎麼補都只是擦屁股。
▋ 止血做法:301 放第一層
直接把強制 HTTPS 的 rewrite 放到網站根目錄 .htaccess 最上面。位置一定要在 WordPress 預設規則、快取規則、其他轉址規則前面。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>▍ 正確做法:位置決定勝負
- 保留 R=301:不要改成 302,也不要留 307。
- 不要刪 X-Forwarded-Proto:有 CDN 或反向代理時,這行很重要。
- 改完就清快取:主機、CDN、瀏覽器都要清。
▋ 為什麼 307 不及格?
307 Temporary Redirect 代表暫時轉址。它不會像 301 那樣直接告訴搜尋引擎:這個 URL 已經永久搬家。你要的是單一、穩定、可預期的 canonical 訊號,不是中間再塞一層觀察站。
把規則放到 Apache 第一層,HTTP 一進來就先被導到 HTTPS。入口先統一,WordPress 跟外掛就不用再補跳一次。
▋ 怎麼驗證真的修好了?
不要只看瀏覽器網址列。那不準。直接查第一跳回應。
curl -I http://yourdomain.com
▍ 判斷準則:第一個回應必須直接是 301 Moved Permanently,而且 Location 直接指向 https://。只要中間還有 307,代表前面的規則還沒收乾淨。
小提醒:測試請用無痕視窗,而且要登出狀態。登入、快取、CDN 都會讓你誤判。
需要 WordPress 客製化協助?歡迎聯絡我們


