[htaccess]把www的網址永遠轉址到non-www

如果你的網址像是5分鐘閱讀的網站一樣,
網址最前面不是以 www 開頭,
而是屬於Sub-Domain(子域名)的話,
有時候會有一些困擾,
就是搜尋引擎在檢索時,
或是有些網友不小心會習慣性的打錯,
在網址的前面加上了www,
以這個網站為例,就會變成了 www.km.nicetypo.com 這樣。
 
雖然一般來說,瀏覽是不會有什麼問題,
都可以正常連線,
但若是網站中有大量的JS功能(JQuery等),
就很有可能會發生問題。
那麼要如何把有加上www進來的網址,全部自動改成去掉www呢?
 

用 .htaccess 來強制轉址


一般在網站建置的規範中,用來轉址的方式還不少,
但是最建議的方式,就是採用 .htaccess 這個檔案,來進行轉址。
這種方法是最方便而且無副作用。
 
以這個 .htaccess 來轉址的方式,簡單說明如下:
  • 開啟網站根目錄的 .htaccess 檔案。
    如果在你的網站根目錄下找不到這個檔案,有可能是:
    1. 檔案以 . (點點)開頭的,都是屬於隱藏檔案,所以你看不到,只要開啟顯示隱藏檔案,應該就可以看到他了。
    2. 如果開啟顯示隱藏檔案還是看不到,那麼可能是根本沒有這個檔案,沒關係,沒有就新建一個純文字檔,然後命名為 .htaccess,記得檔名是以點 . 為開頭的喔!

  • 開啟了.htaccess檔案後,加入下面的強制永久轉址的Code,
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

那如果是反過來,
要將所有非www開頭的網址,全部轉為www的網址呢(non-www to www)?
也很簡單,
做法跟上面的步驟是一樣的,只是在 .htaccess 的檔案裡面寫入的轉址碼不同,
下面是把 non-www 轉址到 www 的寫法:
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

 
這樣就行了,大家都可以試試看囉 ^^
 
另外關於 .htaccess 的轉址,也可以再參考我們寫的另一篇,
有關從 http 轉址到 https 的教學文章:
如何強制把 HTTP 導向 HTTPS,打造更安全的加密網站