0

常用到的 301 Redirect範例

Posted in website 相關 at 十二月 19th, 2007 / 瀏覽:1,101 人次 /

底下範例幾個有關在 . htaccess中站長們比較會需要用的 301 Redirect的寫法,至於要怎麼做,我想從最簡單的步驟開始講起好了,. htaccess檔案在哪裡,要怎麼改?? 

一般使用 Unix/Linux主機商(必須使用的是apache)應該都允許你有自己的這個 . htaccess檔案,它通常放在你的根目錄下面,類似下圖 So…你可以在你的主機根目錄下(public_html)看到這個檔案 . htaccess (小數點後無空格喔),如果沒有的話,請自己新建立一個,權限請設為 644即可,我的 cocolike.com因為是 addon domain,所以我的檔案在 cocolike的目錄下

htaccess

接下來說明我的範例和需求

1. URL規範化及首頁統一導向

將 http://www.cocolike.com,http://www.cocolike.com/index.html,http://cocolike.com/index.html 都指向唯一的一個 http://cocolike.com

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.cocolike.com$ [NC]
RewriteRule ^(.*)$
http://cocolike.com/$1 [R=301,L]
rewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
rewriteRule ^index\.html$
http://cocolike.com/ [R=301,L]

首先 RewriteEngine on綠字的部分會將所有指向 http://www.cocolike.com 的需求都用 301 redirect的方法轉向到 http://cocolike.com 去

紅字的部分則會將你目錄下的 index.html導到 /目錄下,意即 http://www.cocolike.com/index.html 和http://cocolike.com/index.html 都會轉向到 http://cocolike.com 去

要導向到有 www 的話,把綠字的部分改成如下即可

RewriteCond %{HTTP_HOST} ^cocolike.com$ [NC]
RewriteRule ^(.*)$ http://www.cocolike.com/$1 [R=301,L
]

2. 主網域的子網域導向 addon domain

因為我的 cocolike.com是 addon domain,所以我的主網域會自動產生 cocolike.com 的子網域對照到我的這個網域,假如說我的主網域是 www.maincocolike.com ,意思是當我打入 http://cocolike.maincocolike.com 時一樣讀的到我 http://cocolike.com 的網頁內容,其實會跟我的 cocolike.com重複了,因此我必須將子網域直接用 301 Redirect導向我的 domain

RewriteEngine on
RewriteCond %{HTTP_HOST} ^cocolike.maincocolike.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.cocolike.maincocolike.com$
RewriteRule ^(.*)$
http://cocolike.com [R=301,L]

請先 RewriteEngine on紅字的部分會將我的有 www和沒有www的 http://cocolike.maincocolike.com 301導向我的 http://cocolike.com 去,網頁才不會重覆被索引認為是兩份內容

3. 子網域轉向到一級目錄下

一樣的,我原本愛設一些子網域名稱,例如 forum.cocolike.com,blog.cocolike.com等等,但是其實你會發現,子網域不會帶給你太多的好處,你如果不是甚麼大得不得了的網站,使用一級的目錄不會比較糟糕,更何況,當你設了子網域之後,如果你不設定其他的項目,其實用目錄的方式也讀的到子網域所有的內容,變成兩個網域都有相同的內容喔(可參考這篇文章 二级域名还是一级目录?),所以這裡建議是可以把子網域拿掉的 !!

那子網域 301轉向到一級目錄下呢?? 我把 forum.cocolike.com用 301轉向 cocolike.com/forum/

RewriteEngine on
RewriteCond %{HTTP_HOST} ^forum.cocolike.com$ [NC]
RewriteRule ^(.*)$
http://cocolike.com/forum/ [R=301,L]

RewriteEngine on紅字的部分會將我的 forum.cocolike.com 301導向我的 cocolike.com/forum/去 

4. 主網域的一級目錄導向 addon domain

問題來了,我的主網域不是也有這問題嗎?? 如果我要將主網域的 http://www.maincocolike.com/cocolike/ 一級目錄和 http://cocolike.com/ 這個網址是同樣的一份內容的問題加以解決,那我必須將主網域的 cocolike目錄導向我的 cocolike.com網域去,對吧,但是這個 . htaccess必須到上一層根目錄(主網域的根目錄)去改那一個才對囉,不是改我現在 cocolike的目錄的那個 . htaccess

RewriteEngine on
RewriteCond %{HTTP_HOST} ^.*$
RewriteRule ^cocolike/?$
http://cocolike.com/$1 [R=301,L]

一樣 RewriteEngine on綠字的部分會把我主網域 http://www.maincocolike.com/cocolike 的目錄 301導向我的 http://cocolike.com 去

5. 一級目錄的首頁統一導向

那我的 http://cocolike.com/blog 呢?? 是否 http://cocolike.com/blog/index.html 也必須導向 http://cocolike.com/blog/ ,其實我的 blog有外掛在幫我做這件事情,不過還是寫一下相關的敘述該怎麼寫吧

RewriteEngine on
RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /blog/index.html\ HTTP/
RewriteRule ^blog/index\.html$
http://cocolike.com/blog/ [R=301,L]

ㄟ,如果是同一個 . htaccess檔案中,RewriteEngine on只要在最前面寫一遍就可以了,不要一直寫喔^^

6. 永久導向到另一個網域

最後,如果我網站很大,怕別人混淆了我的網域名稱,又申請了一個 cocolike.net的話,總不要又被認為是兩份文件吧,將一個 cocolike.net網址永久轉向到就有的 cocolike.com網址:

是將 http://cocolike.net 定向到 http://cocolike.com,請在你的 cocolike.net的根目錄夾內的 . htaccess加入這一行:

Redirect permanent / http://cocolike.com/

即可,同時也是告訴搜索引擎這兩個域名的關係了。

說明完了,有的動作你的主機商提供的介面例如 CPanel可以幫你做掉,所以你也可以不用手動加到 . htaccess去啦 !!!

本文內容為原創作品(cocolike.com),引用者請按上方引用 link或通知我一聲,請勿全文轉貼,謝謝 !!

此文章發表於 website 相關

Leave a Reply

(若看不到驗證碼,請重新整理網頁。)

我的網站連結

好友網站連結

網誌統計

    文章數:442
    頁面數:5
    連結數:7
    評論數:473
    總字數:399694
    建站:2007年9月30日
    最早文章日期:2007-10-2
    最後更新日期:2008-10-2 12:06am
    Akismet:3531
  • 1 線上,
  • 46 同時最多,
  • 131279 累積人數