SEO GUIDE
網站專欄 Q & A
技術 SEO

如何使用 .htaccess 將 HTTP 轉向 HTTPS?4 步驟輕鬆搞定!

如何使用 .htaccess 將 HTTP 轉向 HTTPS?4 步驟輕鬆搞定!

將網站從 HTTP 升級到 HTTPS,已經不是「要不要做」,而是「越早做越好」的基本工程。HTTPS 不只保護使用者與伺服器之間的傳輸資料,還會直接影響 Google 搜尋排名、Core Web Vitals 評分、瀏覽器信任標示,甚至 AI 搜尋引擎是否願意推薦您的網站。在 Apache 伺服器上,透過 .htaccess 設定 301 重導向,是最快、最不需動到原始碼的做法。本文將從 SSL 憑證確認、.htaccess 規則寫法、實務情境(WordPress / Cloudflare / Nginx / IIS)到常見錯誤排查,提供完整的中文操作指南,適合網站管理員、行銷人員與第一次接觸 .htaccess 的中小企業主閱讀。

為什麼一定要把網站升級為 HTTPS?

很多網站主以為 HTTPS 只是「加上一個鎖頭圖示」,但實際上它影響的層面遠超過視覺。從 2018 年 Chrome 開始把所有 HTTP 網站標記為「不安全」之後,HTTPS 已經是網站的標準配備,而不是加分項目。

HTTPS 不只是「加密」,更是搜尋引擎信任、瀏覽器信任、使用者信任的三重門檻。

HTTPS 對網站的四個核心影響:

資料加密
HTTPS 使用 TLS 加密通道,使用者輸入的帳號、密碼、信用卡、表單資料不會在公共 Wi-Fi 上被竊聽,降低資安風險。
SEO 排名因子
Google 自 2014 年起把 HTTPS 列為排名訊號之一。同樣品質的兩個網站,HTTPS 版本通常會獲得微幅但穩定的排名加成
瀏覽器信任
Chrome、Safari、Edge 對 HTTP 網站會顯示「不安全」警告,使用者看到後容易直接離開,跳出率明顯上升
AEO 推薦門檻
ChatGPT、Perplexity、Google AI Overviews 在抓取與引用網站時,會優先選擇具備 HTTPS 與穩定憑證的來源,以避免推薦不安全內容給使用者。
實務觀察:在 2026 年 AI 搜尋時代,HTTPS 已經是「能不能被 AI 引用」的隱形門檻。許多企業辛苦撰寫的內容,因為網站仍停留在 HTTP,在 ChatGPT 與 Perplexity 的回答中很少被引用——這不是排名問題,而是信任過濾。

什麼是 .htaccess?它的角色與限制

.htaccessApache 伺服器專用的設定檔,它的全名是 Hypertext Access(超文本存取設定)。檔名以一個點開頭,代表它是隱藏檔案,沒有副檔名。它的特色是「目錄層級生效」——放在哪個目錄,就只控制該目錄與其子目錄的行為。

.htaccess 能做哪些事?

  • URL 重導向(包括 HTTP→HTTPS、www→non-www、舊網址→新網址)
  • 網址美化(把 ?id=123 改寫成 /article/123/)
  • 密碼保護特定目錄(Basic Authentication)
  • IP 封鎖、防盜連、防垃圾爬蟲
  • 自訂錯誤頁(404、500 等)
  • 強制下載特定副檔名、設定快取標頭

.htaccess 的限制與風險

雖然 .htaccess 功能強大,但有幾個重要限制必須先理解,否則容易「改了沒生效」或「整站爆 500 錯誤」:

限制項目 說明 對應做法
僅限 Apache Nginx、IIS、Caddy 不讀取 .htaccess 改用各自的設定檔(見第五章)
需要 AllowOverride 主機若關閉 AllowOverride All,規則無效 聯絡主機商開啟,或使用 vhost 設定
需要 mod_rewrite 301 重導向依賴此模組 聯絡主機商確認已啟用
語法錯誤會 500 一個多餘字元就讓整站當機 修改前先備份原檔
效能略低於 vhost 每個請求都會讀檔,造成微幅延遲 正式環境可考慮搬到 vhost
動手前必做:修改 .htaccess 前,務必先用 FTP / SFTP 下載一份備份,命名為 .htaccess.bak。萬一規則寫錯導致 500 錯誤,可以立刻把備份檔覆蓋回去。沒有備份就動手,是最常見的災難起點

四個步驟完成 HTTP 轉 HTTPS

以下是最標準的 4 個步驟流程,從前置確認、找檔案、寫規則到測試,每一步都有實務細節需要注意。

  • 確認 SSL 憑證已正確安裝 在寫任何重導向規則之前,網站必須已經能透過 https:// 正常開啟。如果 HTTPS 版本連不上,卻先設定強制跳轉,瀏覽器只會顯示「無法建立安全連線」。多數虛擬主機商(SiteGround、Bluehost、戰國策、捕夢網等)都提供免費 Let's Encrypt 憑證,在主機後台一鍵啟用即可。
    在瀏覽器手動輸入 https://yourdomain.com,確認頁面能載入、網址列出現鎖頭圖示、且沒有「您的連線不是私人連線」警告,才算憑證安裝成功。可用 SSL Labs Server Test 進一步檢測憑證等級,目標為 A 或 A+。
  • 找到或建立 .htaccess 檔案 用 FTP 工具(FileZilla、WinSCP、Cyberduck)連線到主機,進入網站的根目錄(通常是 public_htmlwwwhtdocs)。如果已存在 .htaccess,直接下載編輯;如果沒有,可在本機建立純文字檔再上傳。注意:Windows 系統不允許「以點開頭、沒有副檔名」的檔名,可先命名為 htaccess.txt 上傳後再到主機改名。
    FileZilla 預設不顯示隱藏檔。請點擊「伺服器」→「強制顯示隱藏檔」,才能看到 .htaccess
  • 加入 301 重導向規則.htaccess 檔案最上方新增以下三行規則。如果檔案中已有 RewriteEngine On,則只需要加入後面兩行,避免重複宣告造成衝突。
    WordPress 網站的 .htaccess 通常已有 # BEGIN WordPress 區塊,請把 HTTPS 規則放在該區塊「之前」,而不是塞進區塊內,以免 WordPress 更新時被覆蓋。
  • 上傳、清快取、跨瀏覽器測試 存檔上傳後,先用無痕視窗測試,避免瀏覽器快取干擾。輸入 http://yourdomain.com 應自動跳轉到 https://,測試多個內頁(http://yourdomain.com/abouthttp://yourdomain.com/products/123)是否也都正確跳轉。同時使用 Chrome、Safari、Firefox 各測一次。
    httpstatus.io 輸入網址,可看到完整跳轉鏈。理想結果是「http:// → 301 → https:// → 200」,只有一次跳轉。如果出現 302、多次跳轉或 307,需回頭檢查規則。

.htaccess 標準規則(三行版本)

.htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

每一行做什麼?

  • RewriteEngine On——啟動 Apache 的 URL 重寫引擎,是所有 RewriteRule 的前提。
  • RewriteCond %{HTTPS} off——只在「當前連線不是 HTTPS」時才執行下一行,避免已是 HTTPS 的請求被重複處理造成迴圈。
  • RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]——把使用者送往「同一主機、同一路徑,但改用 HTTPS」的網址。[L] 代表這是最後一條規則,[R=301] 代表永久重導向。

進階寫法:同時處理 www / non-www

如果同時想統一網址(例如把 www.yourdomain.com 也導到 yourdomain.com),可以用單一規則同時處理 HTTPS 與網域正規化,避免兩段規則造成雙重跳轉(http→https→non-www,共兩次跳轉會輕微影響 LCP):

.htaccess
RewriteEngine On

# 同時強制 HTTPS + 去除 www (合併為單次跳轉)
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\\\\\\\\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
提示:如果要保留 www(改成把 non-www 導到 www),只需把 RewriteCond 改成 RewriteCond %{HTTP_HOST} !^www\\\\\\\\.,並將 RewriteRule 調整為 https://www.%{HTTP_HOST}%{REQUEST_URI}非 www 與 www 二選一即可,不要兩個版本都對外開放,否則會被 Google 視為重複內容。

為什麼一定要用 301 而不是 302?

301 與 302 都能達到「網址跳轉」的效果,但對搜尋引擎來說,兩者意義完全不同。錯用 302 是 HTTPS 升級最常見、也最致命的 SEO 錯誤之一。

項目 301 永久重導向 302 暫時重導向
適用情境 網址永遠改變(HTTPS 升級、換網域、合併網站) 短期活動頁、維護頁、A/B 測試
權重傳遞 傳遞 95% 以上的 PageRank 幾乎不傳遞,搜尋引擎保留舊網址
索引更新 Google 會把舊網址替換為新網址 Google 持續索引舊網址
瀏覽器快取 會被快取(下次直接到 HTTPS) 不快取(每次都要再問伺服器)
HTTPS 升級 ✓ 正確選擇 ✕ 嚴重錯誤
常見災情:不少 WordPress 外掛(尤其是 Really Simple SSL 早期版本)預設使用 302 跳轉。看似網站正常運作,但三個月後排名持續下滑,原因就是搜尋引擎遲遲不更新索引,認為您只是「暫時」改用 HTTPS。設定完一定要用 httpstatus.io 確認回傳的是 301

不同環境的對應寫法(WordPress / Cloudflare / Nginx / IIS)

並不是每個網站都跑在純 Apache 上。如果您的環境是 WordPress、有掛 Cloudflare、用 Nginx 或 Windows IIS,規則寫法會略有不同。以下分四個情境說明。

情境一:WordPress 網站

WordPress 預設使用 Apache,所以 .htaccess 規則完全適用。但要注意三件事:

  • HTTPS 跳轉規則放在 # BEGIN WordPress 區塊「之前」,避免 WordPress 更新固定網址設定時覆蓋。
  • 到「設定 → 一般」把「WordPress 位址」與「網站位址」都改為 https:// 開頭,否則後台會仍生成 HTTP 連結。
  • 使用 Better Search Replace 或 WP-CLI 把資料庫內所有 http://yourdomain.com 替換為 https://yourdomain.com,解決混合內容(Mixed Content)問題。
替代方案:如果不想動 .htaccess,可安裝外掛「Really Simple SSL」。它會自動處理跳轉與混合內容修正,但跳轉是透過 PHP 執行,效能與相容性略遜於原生 .htaccess 規則。長期建議改回 .htaccess 規則,並停用該外掛。

情境二:有掛 Cloudflare 的網站

Cloudflare 會在使用者與您的伺服器之間架一層 CDN/代理,因此 HTTPS 跳轉有兩種做法,而且不能兩種同時做,否則容易產生無限迴圈。

做法 A:Cloudflare 端
在 Cloudflare 儀表板開啟「SSL/TLS → Edge Certificates → Always Use HTTPS」即可。最簡單,不需動到伺服器。
做法 B:伺服器端
使用 .htaccess 規則。但因 Cloudflare 與伺服器之間用 HTTP 連線時,%{HTTPS} 會顯示 off,容易造成迴圈。
建議
直接用 Cloudflare 的 Always Use HTTPS,不要再加 .htaccess 規則。如果一定要伺服器端執行,需改用 X-Forwarded-Proto 判斷。

若一定要在伺服器端執行 HTTPS 強制,Cloudflare 環境下應改用以下規則:

.htaccess (Cloudflare 環境)
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

情境三:Nginx 主機

Nginx 不讀取 .htaccess,所有規則必須寫在 nginx.confsites-available/ 的 server block 內。以下是對應的 server block 寫法,放在監聽 80 port 的區塊裡:

nginx.conf
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://yourdomain.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name yourdomain.com;
    # ... SSL 憑證與其他設定 ...
}

修改後使用 sudo nginx -t 檢查語法,確認 syntax is ok 後,執行 sudo systemctl reload nginx 重新載入設定(不要用 restart,否則會中斷連線)。

情境四:Windows IIS 主機

IIS 使用 web.config 取代 .htaccess,需安裝「URL Rewrite Module」。對應的規則寫在 <system.webServer> 區塊內:

web.config
<rewrite>
    <rules>
        <rule name="HTTP to HTTPS" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTPS}" pattern="off" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" 
                redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>
環境快速對照: Apache → .htaccess; Nginx → nginx.conf 的 server block; IIS → web.config 的 rewrite rules; Cloudflare → 直接用 Edge 端「Always Use HTTPS」最省事。

HTTP 轉 HTTPS 常見錯誤與排查

即使規則寫對,實務上仍可能出現「跳轉沒生效」「整站 500」「無限迴圈」等問題。以下整理六個最常見錯誤與排查方向:

  • 無限重導向迴圈(ERR_TOO_MANY_REDIRECTS) 最常見原因:Cloudflare 與 .htaccess 同時設定 HTTPS 強制,或 Cloudflare SSL 模式設為「Flexible」。排查:關掉其中一個,並把 Cloudflare SSL 模式改為「Full」或「Full (Strict)」。
  • 500 Internal Server Error 幾乎都是 .htaccess 語法錯誤,或主機未啟用 mod_rewrite排查:把備份檔覆蓋回去,確認網站恢復後逐行加入規則,排除哪一行有問題;若仍 500,請主機商確認 mod_rewriteAllowOverride All 是否啟用。
  • 混合內容警告(Mixed Content) HTTPS 頁面內仍載入 HTTP 的圖片、CSS、JS,導致鎖頭圖示變灰色或紅色三角形。排查:用 Chrome DevTools 的 Console 查看警告,逐一把資源網址改成 https://協定相對網址 //yourdomain.com/...。WordPress 可用 Better Search Replace 批次處理。
  • 回傳 302 而非 301 常見於 WordPress 外掛、Cloudflare Page Rules 預設、或寫成 [L,R](漏寫 301)。排查:用 httpstatus.io 確認回傳碼;若不是 301,檢查外掛設定與 .htaccess 是否完整寫出 [L,R=301]
  • 部分頁面沒跳轉 通常是 .htaccess 放錯目錄(放在子目錄而非根目錄),或被其他更早的 RewriteRule 攔截。排查:確認 .htaccesspublic_html(或對應根目錄),並把 HTTPS 規則放在所有規則「之前」。
  • SSL 憑證錯誤(NET::ERR_CERT_INVALID) 憑證未涵蓋所有子網域(例如只有 yourdomain.com 沒有 www.yourdomain.com),或憑證已過期。排查:SSL Labs Server Test 檢測,確認憑證涵蓋的網域與到期日;Let's Encrypt 預設 90 天到期,要設定自動續約。

升級後必做的 SEO 收尾檢查

301 規則生效只是「技術完成」,但搜尋引擎與內部連結還需要時間追上。以下五件事必須在 HTTPS 上線後 48 小時內完成,避免排名暫時下滑或流量斷層:

  • Google Search Console 新增 HTTPS 版本網站資源,並重新提交 sitemap.xml
  • 更新 sitemap.xmlrobots.txt,內部所有網址都改為 https://
  • 檢查 Google Analytics 4 的網址設定,把預設網址從 http:// 改為 https://
  • 檢查並更新所有外部反向連結(從合作網站、部落格、社群、Email 簽名檔)
  • 更新 Open Graph 標籤、Schema.org 結構化資料中所有 url 欄位
升級驗收公式 三層檢查:Header → Content → Search Console

第一層「Header 層」用 httpstatus.io 確認所有舊網址都回傳 301 並指向 HTTPS;第二層「Content 層」用 Chrome DevTools 開啟首頁與重要內頁,確認沒有 Mixed Content 警告;第三層「Search Console 層」確認 HTTPS 資源已正常收到曝光與點擊數據,通常 1-2 週內就會看到舊 HTTP 資源流量下降、HTTPS 資源流量上升。

企業官網升級 HTTPS 後一週,Search Console 的 HTTP 資源點擊降 90%、HTTPS 資源點擊上升至原本水準,代表索引轉移順利;若兩週後 HTTP 仍有大量點擊,要回頭檢查 301 是否在所有頁面都生效。
耐心提醒:HTTPS 升級後,Google 可能需要 2 週到 2 個月才會完全把索引轉移到新網址。期間排名與流量可能有 5-15% 的波動,屬於正常現象。不要因為短期波動就回退到 HTTP——回退反而會造成更嚴重的索引混亂。

結論:.htaccess 是最快、但最需要謹慎的 HTTPS 升級方式

透過 .htaccess 設定 HTTP 轉 HTTPS 重導向,只需要三行程式碼就能完成,但背後牽涉到 SSL 憑證、Apache 模組、CDN 環境、瀏覽器快取與 SEO 索引轉移等多個環節。動手前先備份、選對 301、針對環境(Apache / Nginx / IIS / Cloudflare)用對寫法,並在上線後完成 Search Console、sitemap、Analytics 的收尾,才能讓這次升級既安全又對 SEO 有正面效益

升級前可用以下五個問題自我檢查:

  • SSL 憑證是否已正確安裝,https:// 版本能直接開啟且無警告?
  • 是否已備份原 .htaccess.htaccess.bak?
  • 主機環境是否確定為 Apache?(若為 Nginx / IIS / Cloudflare 需改用對應寫法)
  • 規則是否使用 [L,R=301] 永久重導向,而非 302?
  • 升級後是否同步更新 Search Console、sitemap、Analytics 與內部連結?
核心結論:在 2026 年 AI 搜尋時代,HTTPS 已是搜尋引擎、瀏覽器、AI 推薦三方共同的信任門檻。一個簡單的 .htaccess 規則,能同時改善資安、SEO、品牌信任與 AI 引用率,投資報酬率是所有 SEO 操作中最高的。如果想進一步了解網站 SEO 優化,可以參考新視野 SEO 教學指南

常見問答 FAQ

沒安裝 SSL 憑證可以直接設定 .htaccess 強制 HTTPS 嗎?
絕對不行.htaccess 規則只是告訴瀏覽器「請改用 HTTPS 連線」,但實際的加密傳輸必須由伺服器上的 SSL 憑證來完成。如果沒有憑證就強制跳轉,使用者只會看到「無法建立安全連線(NET::ERR_CERT_AUTHORITY_INVALID)」的紅色錯誤頁,等於整個網站打不開。正確順序是:1. 先到主機後台安裝 Let's Encrypt 免費憑證(多數虛擬主機商如 SiteGround、Bluehost、戰國策、捕夢網都支援一鍵安裝);2. 用瀏覽器手動輸入 https://yourdomain.com 確認能正常開啟、出現鎖頭圖示;3. 確認無誤後再加入 .htaccess 規則。如果主機商不支援免費憑證,可考慮升級主機或改用 Cloudflare 提供免費 SSL。
修改 .htaccess 之後網站變成 500 錯誤怎麼辦?
500 Internal Server Error 在 .htaccess 修改後出現,九成以上是語法錯誤主機未啟用 mod_rewrite。緊急處理流程:1. 立刻把備份檔 .htaccess.bak 重新命名覆蓋回去,確認網站先恢復正常。2. 用文字編輯器(VS Code、Notepad++)打開新規則檢查:是否有多餘空白、中文標點符號被誤打進去、引號是否成對、[L,R=301] 是否完整。3. 把規則一行一行加回去,每加一行就上傳測試,找出哪一行造成 500。4. 若三行都正確仍 500,請聯絡主機商確認伺服器是否啟用了 mod_rewrite 模組與 AllowOverride All 設定。台灣常見虛擬主機商預設都已啟用,但部分共用主機或便宜 VPS 可能需要主動申請。
HTTPS 升級會讓 SEO 排名下降嗎?
短期可能小幅波動,長期一定是正向。Google 在處理 HTTPS 遷移時,需要重新爬取所有 URL 並更新索引,過程中可能出現 1-2 週內排名波動 5-15% 的情況,這是正常現象而非懲罰。升級三個月後,通常會觀察到排名穩定回升並略高於原本水準,因為 HTTPS 本身就是 Google 排名訊號之一。要降低短期波動的方法是:1. 全站使用 301 永久重導向(不是 302);2. 一次性升級全站,不要部分頁面 HTTP、部分 HTTPS 並存;3. 立即到 Search Console 新增 HTTPS 資源並提交新 sitemap;4. 通知重要外部反向連結方更新連結網址。曾有電商案例完整執行以上四步,只在升級第 4-7 天有 8% 點擊下滑,第二週開始就完全恢復並超過原水準。
Cloudflare 已經有 "Always Use HTTPS",還需要在 .htaccess 加規則嗎?
不需要,而且建議不要。如果同時在 Cloudflare 端開啟「Always Use HTTPS」,又在伺服器 .htaccess 加 HTTPS 強制規則,容易產生無限重導向迴圈(ERR_TOO_MANY_REDIRECTS),原因是 Cloudflare 與您的伺服器之間可能用 HTTP 通訊(取決於 SSL 模式設定),%{HTTPS} 變數會回傳 off,造成規則一直觸發。最佳實務是「邊緣端處理 HTTPS,源伺服器只處理應用邏輯」:1. Cloudflare 儀表板 → SSL/TLS → 設為 Full 或 Full (Strict);2. SSL/TLS → Edge Certificates → 開啟 Always Use HTTPS 與 Automatic HTTPS Rewrites;3. 把 .htaccess 內的 HTTPS 強制規則註解掉或移除。如果一定要在伺服器端執行(例如未來可能撤掉 Cloudflare),則必須改用 RewriteCond %{HTTP:X-Forwarded-Proto} !https 判斷,而非 %{HTTPS} off
301 重導向會傳遞多少 SEO 權重?
根據 Google 多次官方說明(包括 John Mueller 在 2016 年與 2020 年的公開發言),301 重導向會傳遞絕大多數的 PageRank,實務上接近 100%。早期 Matt Cutts 曾提到「會有微量損失」,但這個說法在 2016 年後已被修正。實務操作上可以視為「301 = 完整保留權重」,因此 HTTPS 升級用 301 後,搜尋引擎會把原本指向 HTTP 版本的所有反向連結價值,完整轉移到 HTTPS 版本。需要注意的是,多重跳轉會稀釋傳遞效率——例如「http://www.example.com → http://example.com → https://example.com」走兩跳,雖然 Google 仍會處理,但建議合併成單次跳轉以最大化效率(寫法見本文第三章的「進階寫法」段落)。302 則完全不同,幾乎不傳遞權重,搜尋引擎會持續保留並索引舊網址,這也是為什麼 HTTPS 升級絕對不能用 302
升級 HTTPS 之後,網站速度會變慢嗎?
現代環境下幾乎不會變慢,反而可能更快。HTTPS 確實多了 TLS 握手(handshake)的步驟,但因為以下三個現代技術,實際載入速度通常與 HTTP 相當甚至更快:1. HTTP/2 與 HTTP/3 只能在 HTTPS 上運作——這兩個協定支援多工(multiplexing)、標頭壓縮(HPACK)、伺服器推送(server push),整體效能遠優於 HTTP/1.1。2. TLS 1.3 大幅縮短握手時間,從 TLS 1.2 的兩次往返(2-RTT)降為一次往返(1-RTT),甚至支援 0-RTT(零往返)。3. 瀏覽器與 CDN 對 HTTPS 連線有更積極的快取策略,例如 HSTS 預載清單可以省去第一次 HTTP 跳轉的時間。實務上,升級 HTTPS 後 Core Web Vitals 的 LCP(Largest Contentful Paint)指標通常會略有改善,而非下降。唯一可能變慢的情境是主機未啟用 HTTP/2、或 SSL 憑證鏈過長,可用 SSL Labs Server Test 檢測並優化。

歡迎推廣本文,請務必連結(LINK)本文出處:新視野網頁設計公司