改變網址而不會出現「404 找不到網頁」:301 Redirect 與 .htaccess

 

本文同步發表於「真‧他媽的」與「真‧他媽的 - 樂多日誌」。

教學文:第 13 天

 

當你看到這一篇教學文的時候,這個部落格的網址已經由 http://vinta.ws/wordpress/ 變成 http://vinta.ws/blog/ 了,雖然兩者的差別不是挺大的,但是,這是 奇檬子(ki mo chi)的問題。

 

現在你在網址列輸入 http://vinta.ws/wordpress/ 的話,它會自動被轉換成 http://vinta.ws/blog/,因為我使用了 301 Redirect(Permanent Redirect:永久性重新定址)。在沒有使用 Redirect 的情況下,如果就冒然地把網址改成 http://vinta.ws/blog/ 的話,那些從 http://vinta.ws/wordpress/ 連進來的人就只會看到「HTTP 404 找不到網頁」。

 

方法就是直接更改 .htaccess,這個檔案通常會在網站的根目錄,如果沒有,就自己用 Notepad 新增一個。你的作業系統不允許 .htaccess 這樣的檔案名稱時,就先把它命名為 htaccess.txt,上傳到 FTP 之後,再把檔案名稱改成 .htaccess。

 

--------------- 網頁伺服器必須是 Apache ---------------

 

【情況一】

 

http://your_domain.com/wordpress >> http://your_domain.com/blog

 

讓連接到 /wordpress 的連結重新定址到 /blog,包含下層路徑

例如:http://vinta.ws/wordpress/?p=334 會被指向 http://vinta.ws/blog/?p=334

 

在 .htaccess 中要這麼寫:

 

Redirect /wordpress http://your_domain.com/blog

 

如果有安裝 mod_rewrite 模組的話,也可以這樣寫:

 

RewriteEngine on

RewriteRule ^wordpress(.*)$ /blog$1 [R=301,L]

 

【情況二】

 

http://your_domain.com/wordpress >> http://your_domain.com

 

讓連接到 /wordpress 的連結重新定址到 根目錄,包含下層路徑(如 /wordpress/xxx)

 

在 .htaccess 中要這麼寫:

 

Redirect /wordpress http://your_domain.com

 

如果有安裝 mod_rewrite 模組的話,也可以這樣寫:

 

RewriteEngine on

RewriteRule ^wordpress(.*)$ $1 [R=301,L]

 

【情況三】

 

http://old_domain.com/ >> http://new_domain.com/

 

讓連接到 舊網址 的連結重新定址到 新網址,前提是你必須是舊網址的擁有者

建議讓 舊網址 和 新網址 包持相同的目錄結構

 

把 .htaccess 放到 舊網址 的根目錄,然後要這麼寫:

 

RewriteEngine on

RewriteRule (.*) http://new_domain.com/$1 [R=301,L]

 

【情況四】

 

http://www.your_domain.com/ >> http://your_domain.com/

 

統一你的網址,不要出現 www

由 www.your_domain.com 進入的連結一律重新指向 your_domain.com

 

可以在 .htaccess 中這麼寫:

 

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.your_domain\.com$ [NC]

RewriteRule ^(.*)$ http://your_domain.com/$1 [R=301,L]

 

------------ BLOG 不應該放在根目錄啊~ ------------

 

【技巧一】

 

確保你的網站實行了 301 Redirect,可以到 Search Engine Friendly Redirect Checker 檢查。輸入要檢查的網址和驗證碼就可以了。

 

【技巧二】

 

防止 .htaccess 檔案被檢視,則要在 .htaccess 中加入:

 

<files .htaccess>

order allow,deny

deny from all

</files>

 

【技巧三】

 

通常該目錄中沒有 index.html 的時候,Apache 會把此目錄下的檔案統統列出來。如果你不想這麼做的話,在 .htaccess 中加入這一行:

 

Options -Indexes

 

------------ 深圳人超愛穿高跟鞋的 ------------

 

這是我從深圳歸來的第一篇文章~

 

我這一趟去買了好多科幻小說,最重要的是,我找到了「戰爭遊戲」的續集:死者代言人(Sperker For The Dead)、外星屠異(Xenocide),當然,是簡體版的。我已經讀完了「死者代言人」,現在正準備讀「外星屠異」。我真的好喜歡這一系列的作品~ 另外,我也找到了一套「菲利普˙狄克」的小說,菲利普˙狄克 就是「銀翼殺手」,也是《魔鬼終結者》《異形終結》《強殖入侵》《關鍵報告》電影的原著小說的作者。

 

在深圳跑了好幾個地方的書城,我發覺啊,跟台灣的書店一樣,他們總是把「科幻」跟「奇幻」的書擺在一起。但是,它們是不一樣的東西啊!我每次走到標示著「科幻」的書櫃前,看到的總是那些「精靈」「魔法」「龍」,這不是科幻啊~

 

本文同步發表於「真‧他媽的」與「真‧他媽的 - 樂多日誌」。