search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

使用 .htaccess 實現 Redirect 301/302 重定向轉址規則 - TechMoon 科技月球

SiteGround 3 折主機優惠 + WordPress 一鍵安裝完整教學SiteGround 3 折主機優惠 + WordPress 一鍵安裝完整教學
Hostinger 1.2 折主機優惠 + WordPress 一鍵安裝完整教學Hostinger 1.2 折主機優惠 + WordPress 一鍵安裝完整教學
2 分鐘閱讀

.htaccess 能夠幫助我們透過簡單的幾行程式碼,就能輕鬆的寫入  Redirect 規則,實現 301 或 302 的轉址,讓老舊的網址能夠自動跳轉至指定的新網址,不怕讓使用者看到錯誤畫面而造成使用者體驗不佳的情況了。

目次 隱藏
  • 1 .htaccess 文件簡介
  • 2 .htaccess 常見的 301/302 重定向規則
    • 2.1 如何重定向(301 Redirect)單個頁面?
    • 2.2 如何重定向(301 Redirect)整個網站/網域到另一個新的網站/網域?
    • 2.3 如何重定向(301 Redirect)整個網站/網域到子目錄?
    • 2.4 如何重定向(301 Redirect)子目錄到另一個新的網站?
    • 2.5 如何只重定向(301 Redirect)後綴檔案編碼,保留前面所有檔案名稱?
    • 2.6 如何使用重寫規則從舊網域重定向(301 Redirect)至新網域?
    • 2.7 如何使用重寫規則從 non-www 子網域重定向(301 Redirect)指定至 www 子網域?
    • 2.8 如何使用重寫規則從 non-www 網域重定向(301 Redirect)至帶有子目錄的 www 網域?
    • 2.9 如何使用重寫規則從舊網域重定向(Redirect)至整個新網域(包含完整路徑與所有 query 查詢字串參數)?
    • 2.10 如何使用重寫規則從擁有子目錄的舊網域當中,重定向(Redirect)至沒有子目錄的新網域,且同時包括完整路徑和查詢參數字串?
    • 2.11 如何使用重寫規則將具有查詢參數字串的檔案重定向(Redirect)至根目錄(Root)當中?
    • 2.12 如何使用重定向(Redirect)將 https 網址強制 Force 指向至 http 網址?
    • 2.13 如何使用重定向(Redirect)將 http 網址強制 Force 指向至 https 網址?
    • 2.14 如何刪除網址後綴,例如 index.html 或是 index.php 並重定向(301 Redirect)至根目錄(Root)當中?
    • 2.15 如何保留參數字串,並保留網址結構,將參數字串作為目錄名稱並重定向(Redirect)至根目錄(Root)當中?
    • 2.16 如何保留參數字串,並保留網址結構,將參數字串作為目錄名稱並重定向(Redirect)至子目錄(subdirectoryt)當中?
    • 2.17 如何將舊網站重定向(301 Redirect)至新網域,同時保留其他原始的URL路徑?
    • 2.18 如何將存於根目錄的部落格文章重定向(302 Redirect)至 /blog/ 子目錄當中?
    • 2.19 如何將一個目錄重定向(Redirect)至另一個目錄?
  • 3 相關內容
  • 4 延伸閱讀

至於何時該使用 301 與 302 重定向跳轉,以及他們對 SEO 排名的影響,可以參考這篇:3分鐘了解 301 與 302 Redirect 重定向之間的差異與它們如何影響網站 SEO 排名

通常,除了透過 .htaccess 檔案建立規則來實現網址跳轉功能之外,我們也能透過 CloudFlare 的規則來建立 Forwarding URL,實現自動轉址。

透過 CloudFlare 的規則來建立 Forwarding URL,實現自動轉址。透過 CloudFlare 的規則來建立 Forwarding URL,實現自動轉址。

可惜的是,免費帳戶只能提供3條免費的規則建立,因此若你有大量的舊網址需要遷移時,使用 .htaccess 的方式建立 Redirect 規則就是一個好的選擇。

因此,今天才介紹一些常見與常用的 .htaccess Redirect 規則,讓你能夠快速建立 Redirect 跳轉。

.htaccess 文件簡介

.htaccess 是一個標準的 Apache Web Server 的配置文件,用來控制目錄與所有的子目錄。一般常見基於 Linux 建立的網站,通常都會使用 Apache 進行託管,因此在系統環境安裝完成後,你可以看到預設就已經存在 .htaccess 的文件。

假如你是使用 WordPress、Joomla、Drupal…等等的 Content Management System(CMS),相信你對這個 .htaccess 檔案一定不陌生,因為在這些內容管理系統預設都是使用 .htaccess 來控制大部分的系統執行命令。

.htaccess 檔案可以寫入伺服器的特殊指令,用來指定網域與 IP 的對應,此外,.htaccess 文件常見的做法還有用來自動配置使用者重定向至指定的URL網址,甚至將整個網域進行重定向的跳轉。

簡單來說,.htaccess 能做到的事情非常多,而今天我們就針對 .htaccess 的一項好用功能「實現 Redirect 重定向」功能來做詳細的介紹。

.htaccess 常見的 301/302 重定向規則

如何重定向(301 Redirect)單個頁面?

PHP
Redirect 301 /new.php https://example.com/new.html

Information

代表將 https://example.com/new.php 使用 301 轉址方式轉至 https://example.com/new.html

如何重定向(301 Redirect)整個網站/網域到另一個新的網站/網域?

PHP
Redirect 301 / https://newsite.com/

Information

代表將目前網域/網站,整個透過 301 轉址方式跳轉至 https://newsite.com/,假設目前網域是 https://example.com/,那麼整個網域都會以 301 轉址方式轉至 https://newsite.com/。

如何重定向(301 Redirect)整個網站/網域到子目錄?

PHP
Redirect 301 / https://example.com/subfolder/

Information

代表將目前網域/網站,透過 301 轉址方式,將網站轉移至 /subfolder/ 這個子目錄當中。

如何重定向(301 Redirect)子目錄到另一個新的網站?

PHP
Redirect 301 /subfolder https://newsite.com/

Information

代表將舊的子目錄,透過 301 轉址方式,將該子目錄重定向至新的網址當中。

如何只重定向(301 Redirect)後綴檔案編碼,保留前面所有檔案名稱?

PHP
RedirectMatch 301 (.*).html$ https://example.com$1.php

Information

舉例來說,當你的網站改變系統,原本網頁的編碼為:https://example.com/article-1.php,透過這個重定向規則之後,就會跳轉成:https://example.com/article-1.html

如何使用重寫規則從舊網域重定向(301 Redirect)至新網域?

PHP
RewriteEngine on RewriteBase / RewriteRule (.*) https://newsite.com/$1 [R=301,L]

如何使用重寫規則從 non-www 子網域重定向(301 Redirect)指定至 www 子網域?

PHP
RewriteEngine on RewriteBase / rewritecond %{http_host} ^example.com [nc] rewriterule ^(.*)$ https://example.com/$1 [r=301,nc]

如何使用重寫規則從 non-www 網域重定向(301 Redirect)至帶有子目錄的 www 網域?

PHP
RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} example.com [NC] RewriteRule ^(.*)$ https://www.example.com/directory/index.html [R=301,NC]

如何使用重寫規則從舊網域重定向(Redirect)至整個新網域(包含完整路徑與所有 query 查詢字串參數)?

PHP
Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*) https://www.newsite.com%{REQUEST_URI} [R=302,NC]

如何使用重寫規則從擁有子目錄的舊網域當中,重定向(Redirect)至沒有子目錄的新網域,且同時包括完整路徑和查詢參數字串?

PHP
Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI} ^/oldsubfolder/(.)$ RewriteRule ^(.) https://www.newsite.com/%1 [R=302,NC]

如何使用重寫規則將具有查詢參數字串的檔案重定向(Redirect)至根目錄(Root)當中?

PHP
RewriteEngine on RewriteCond %{QUERY_STRING} id=10 RewriteRule ^index.php$ /new-path/? [L,R=301]

Information

舉例來說,原本網址為:https://example.com/index.php?id=10,會重定向(Redirect)至新網址至:https://example.com/new-path/ 當中。

如何使用重定向(Redirect)將 https 網址強制 Force 指向至 http 網址?

PHP
RewriteEngine on RewriteCond %{HTTPS} on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Warning

雖然不知道為什麼你需要這麼做,但有時若為了排除一些設定上的錯誤,你必須要暫時將網站從 https 轉移至 http 時,就可以使用這個重定向規則。

如何使用重定向(Redirect)將 http 網址強制 Force 指向至 https 網址?

PHP
RewriteEngine On RewriteCond %{HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

Information

這個方式能夠強制將網站從 http 轉至 https,通常你的網站有duplicate content 重複內容的警告時,就可以使用這個 .htaccess 重定向規則。(但切記,你的網站一定必須先安裝並擁有 SSL 證書,否則會出現錯誤。

如何刪除網址後綴,例如 index.html 或是 index.php 並重定向(301 Redirect)至根目錄(Root)當中?

PHP
RewriteEngine On RewriteCond %{THE_REQUEST} /index.php HTTP [NC] RewriteRule (.*)index.php$ /$1 [R=301,L]

如何保留參數字串,並保留網址結構,將參數字串作為目錄名稱並重定向(Redirect)至根目錄(Root)當中?

PHP
RewriteEngine On RewriteRule ^([^/d]+)/?$ index.php?id=$1 [QSA]

Information

舉例來說,原本你的網址為:https://example.com/index.php?id=1024,使用這個重定向(Redirect)規則後,新網址就會變至:https://example.com/1024/

如何保留參數字串,並保留網址結構,將參數字串作為目錄名稱並重定向(Redirect)至子目錄(subdirectoryt)當中?

PHP
RewriteEngine On RewriteRule ^/?category/([^/d]+)/?$ index.php?category=$1 [L,QSA]

如何將舊網站重定向(301 Redirect)至新網域,同時保留其他原始的URL路徑?

PHP
RewriteEngine on RewriteCond %{HTTP_HOST} ^oldsite.com$ [NC] RewriteRule ^(.*)$ https://newsite.com/$1 [R=301,L]

如何將存於根目錄的部落格文章重定向(302 Redirect)至 /blog/ 子目錄當中?

PHP
Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI}/ blog RewriteRule ^(.) https://blogsite.com/%{REQUEST_URI} [R=302,NC] RewriteRule ^(.) https://blogsite.com/blog/%{REQUEST_URI} [R=302,NC]

如何將一個目錄重定向(Redirect)至另一個目錄?

PHP
Options +FollowSymLinks RewriteEngine On RewriteRule ^(.)/old-directory/(.)$ $1/new-directory/$2 [R,L]

以上就是所有常見的 Redirect 重定向網址設定方式,如果有哪裡不清楚的地方歡迎在底下留言讓我知道!

延伸閱讀



熱門推薦

本文由 techmoonxyz 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦