Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

.htaccess 能夠幫助我們透過簡單的幾行程式碼,就能輕鬆的寫入 Redirect 規則,實現 301 或 302 的轉址,讓老舊的網址能夠自動跳轉至指定的新網址,不怕讓使用者看到錯誤畫面而造成使用者體驗不佳的情況了。
.htaccess 能夠幫助我們透過簡單的幾行程式碼,就能輕鬆的寫入 Redirect 規則,實現 301 或 302 的轉址,讓老舊的網址能夠自動跳轉至指定的新網址,不怕讓使用者看到錯誤畫面而造成使用者體驗不佳的情況了。
至於何時該使用 301 與 302 重定向跳轉,以及他們對 SEO 排名的影響,可以參考這篇:3分鐘了解 301 與 302 Redirect 重定向之間的差異與它們如何影響網站 SEO 排名
通常,除了透過 .htaccess 檔案建立規則來實現網址跳轉功能之外,我們也能透過 CloudFlare 的規則來建立 Forwarding URL,實現自動轉址。

可惜的是,免費帳戶只能提供 3 條免費的規則建立,因此若你有大量的舊網址需要遷移時,使用 .htaccess 的方式建立 Redirect 規則就是一個好的選擇。
因此,今天才介紹一些常見與常用的 .htaccess Redirect 規則,讓你能夠快速建立 Redirect 跳轉。
目錄
.htaccess 是一個標準的 Apache Web Server 的配置文件,用來控制目錄與所有的子目錄。一般常見基於 Linux 建立的網站,通常都會使用 Apache 進行託管,因此在系統環境安裝完成後,你可以看到預設就已經存在 .htaccess 的文件。
假如你是使用 WordPress、Joomla、Drupal…等等的 Content Management System(CMS),相信你對這個 .htaccess 檔案一定不陌生,因為在這些內容管理系統預設都是使用 .htaccess 來控制大部分的系統執行命令。
.htaccess 檔案可以寫入伺服器的特殊指令,用來指定網域與 IP 的對應,此外,.htaccess 文件常見的做法還有用來自動配置使用者重定向至指定的URL網址,甚至將整個網域進行重定向的跳轉。
簡單來說,.htaccess 能做到的事情非常多,而今天我們就針對 .htaccess 的一項好用功能「實現 Redirect 重定向」功能來做詳細的介紹。
跳轉邏輯
代表將 https://example.com/new.php 使用 301 轉址方式轉至 https://example.com/new.html。
跳轉邏輯
代表將目前網域/網站,整個透過 301 轉址方式跳轉至 https://newsite.com/,假設目前網域是 https://example.com/,那麼整個網域都會以 301 轉址方式轉至 https://newsite.com/。
跳轉邏輯
代表將目前網域/網站,透過 301 轉址方式,將網站轉移至 /subfolder/ 這個子目錄當中。
跳轉邏輯
代表將舊的子目錄,透過 301 轉址方式,將該子目錄重定向至新的網址當中。
跳轉邏輯
舉例來說,當你的網站改變系統,原本網頁的編碼為:https://example.com/article-1.php,透過這個重定向規則之後,就會跳轉成:https://example.com/article-1.html。
跳轉邏輯
舉例來說,原本網址為:https://example.com/index.php?id=10,會重定向(Redirect)至新網址至:https://example.com/new-path/ 當中。
跳轉邏輯
雖然不知道為什麼你需要這麼做,但有時若為了排除一些設定上的錯誤,你必須要暫時將網站從 https 轉移至 http 時,就可以使用這個重定向規則。
跳轉邏輯
這個方式能夠強制將網站從 http 轉至 https,通常你的網站有duplicate content 重複內容的警告時,就可以使用這個 .htaccess 重定向規則。(但切記,你的網站一定必須先安裝並擁有 SSL 證書,否則會出現錯誤。)
跳轉邏輯
舉例來說,原本你的網址為:https://example.com/index.php?id=1024,使用這個重定向(Redirect)規則後,新網址就會變至:https://example.com/1024/
以上就是所有常見的 Redirect 重定向網址設定方式,如果有哪裡不清楚的地方歡迎在底下留言讓我知道!
請問一下
我可以怎麼轉換下列網址
========================================
https://seemedia.tw/cases/ct?id=13
https://seemedia.tw/cases/ct/13
=========================================
以此類推
id有可能 從0 – 999
Hi Titus,
你可以試試看以下的方式:
#Rewrite Query String from TechMoon
RewriteCond %{QUERY_STRING} ^id=(\w+)
RewriteRule ^cases/ct$ /cases/ct/%1? [R=302,L]
你好,想請問版大,我原本的永久連結是www.example.com/%year%/%monthnum%/%postname%.html
想要改成只有 postname並去掉結尾的.html。就是變成www.example.com/%postname%
曾嘗試用過yoast提供的工具 (https://yoast.com/research/permalink-helper.php) 產生出來的程式碼加到.htaccess中卻不成功。
還請大大不吝幫助。
Hi Claire,
首先你在添加重定向到 .htaccess 當中時要注意一點,妳所添加的程式碼建議在 # BEGIN WordPress 字串之前。
另外,你可以嘗試看看使用
RewriteRule ^\d{4}/\d{2}/([\w-]+)\.html$ http://www.example.com/$1/? [R=301,L],應該會達成你要的效果。您再試試看,有問題歡迎隨時留言。
謝謝大大~~但我一直得到 “500 Internal Server Error”的錯誤訊息~~
難道是我沒有更改的權限嗎? 來去主機商問看看~
Hi Claire,
若發生「500 Internal Server Error」的錯誤,應該是有程式碼打錯了才會導致這個問題。
有關這個錯誤,詳細內容你可以參考:https://techmoon.xyz/500-internal-server-error/。
你可以更換上一次提供給你的程式碼,使用
RewriteRule ^[0-9]+/[0-9]+/(.*)\.html$ /$1 [R=301,L]這個規則試試看,應該可以成功。嗨嗨Sliven大大,
謝謝你,我已經弄好了~
那個 Internal Server Error應該是外掛出了問題。
我把所有外掛停用再重新啟用,都一切恢復正常。
再次感謝ㄚ
Hi Claire,
很高興有幫助妳解決問題!