1. 程式人生 > >.htaccess實現301網頁永久重定向及302臨時重定向

.htaccess實現301網頁永久重定向及302臨時重定向

http://blog.sina.com.cn/s/blog_4e2d571901013imy.html

常用的重定向方式有: 301 redirect, 302 redirect 與 meta fresh: 301 redirect: 301代表永久性轉移(Permanently Moved),301重定向是網頁更改地址後對搜尋引擎友好的最好方法,只要不是暫時搬移的情況,都建議使用301來做轉址。

302 redirect: 302代表暫時性轉移(Temporarily Moved ),在前些年,不少Black Hat SEO曾廣泛應用這項技術作弊,目前,各大主要搜尋引擎均加強了打擊力度,象Google前些年對Business.com以及近來對BMW德國網站的懲罰。即使網站客觀上不是spam,也很容易被搜尋引擎容易誤判為spam而遭到懲罰。

meta fresh: 這在2000年前比較流行,不過現在已很少見。其具體是通過網頁中的meta指令,在特定時間後重定向到新的網頁,如果延遲的時間太短(約5秒之內),會被判斷為spam。

301重定向具體辦法1、設定.htaccess檔案(只適用於linux系統,並需要虛擬主機支援)

使訪問example.com/的時候就會自動轉到www.example.com, 在.htaccess檔案裡寫上以下程式碼即可。

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

注意:URL標準化的301重定向(以上程式碼)需要寫在其他URL-rewrite程式碼之前。下面幾個具體的例子:

(1).重定向domain.com到www.domain.com

這種重定向旨在使域名唯一,是網站SEO必須要做的,後面重定向www.domain.com到domain.com也是出於同樣的原因,只是形式不同。開啟.htaccess檔案,加入以下規則。(下面的規則是針對主域名的,子域名要修改)

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

上面程式碼可以確保所有來自對domain.com的請求都轉向到對 www.domain.com 進行請求。記住.htaccess檔案一定要放在舊網站的根目錄下,並且新網站要和舊網站保持相同的目錄結構及網頁檔案。

(2).重定向olddomain.com到www.newdomain.com

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

(3).重定向olddomain.com 到 newdomain.com

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=301]

2、下面是301網頁永久重定向及、網頁壓縮、400錯誤頁面的一個完整的例子

RewriteEngine on
ErrorDocument 400 http://www.coalmill.com/
ErrorDocument 404 http://www.coalmill.com/
RewriteCond %{HTTP_HOST} ^coalmill.com$ [NC]
RewriteRule ^(.*)$ http://www.coalmill.com/$1 [R=301,L]
RewriteRule cone-crusher/symons-cone-crusher.html cone-crusher/cone-crusher.html [R=301,L]  (單個不帶網址 – 前跳後)
RewriteRule http://www.coalmill.com/index.html http://www.coalmill.com [R=301,L]
RewriteRule http://www.coalmill.com/index.php http://www.coalmill.com [R=301,L]
RewriteRule ^/css/(.*.css$|.*.js$) gzip.php?$1 [L]
RewriteRule ^/js/(.*.css$|.*.js$) gzip.php?$1 [L]

3、網站改變域名A改為B,權重傳遞,粗體部分程式碼起主要作用


RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^A.net [OR]
RewriteCond %{HTTP_HOST} ^www.A.net [NC]
RewriteRule ^(.*)$ http://www.B.com/$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

解釋:

RewriteCond %{REQUEST_FILENAME} !-f
如果檔案存在,就直接訪問檔案,不進行下面的RewriteRule

RewriteCond %{REQUEST_FILENAME} !-d
如果目錄存在就直接訪問目錄不進行RewriteRule

同理
RewriteCond %{REQUEST_URI} !^.*(\.css|\.js|\.gif|\.png|\.jpg|\.jpeg)$ 如果是這些字尾的檔案,就直接訪問檔案,不進行Rewrite

4、更多的.htaccess 301重定向

.htaccess  換域名,主機不變:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^steach.twbbs.org$ [NC]

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

.htaccess  換域名,主機也更換:必須舊主機及域名都在有效運作中,.htaccess放在舊主機根目錄

RewriteEngine on

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

.htaccess 資料夾定向到根目錄:

由http://sth/cat→http://sth  .htaccess放在根目錄

RewriteEngine on

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

.htaccess 子目錄定向到另一個資料夾

http://sth/cat1→http://sth/cat2.htaccess放在根目錄

RewriteEngine on

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

5、301重定向檢測工具

配置完成後,一定認真檢查一下是否正確。Internet有很多類似的Server Header檢查工具,如Check Server Headers Tool – HTTP Status Codes Checker。

http://www.seochat.com/seo-tools/redirect-check/

網站302重定向使用不當導致被GOOGLE懲罰

Business.com是網上最大的商業搜尋引擎和分類目錄,以專業提供商業資訊而享負盛名,包括近19萬網頁。若以“business”為關鍵詞在 Google中進行搜尋,該網站名列第一。不過在9月5日,Business.com遇到一件蹊蹺之事:它的首頁由PR8變成了PR0,而且Google 搜尋結果中找不到首頁。好在被“蒸發”的只是首頁,不過慶幸的是第二天首頁又回到了Google的搜尋結果,但PR仍舊為0。

Business.com的問題出在它的重定向命令上。該網站business.com跳轉到www.business.com,這種重定向本該是永久性的。我們知道,301屬於永久性重定向,而302則屬於臨時性重定向,只有當一個網站或網頁在24到48小時之內臨時移到其它位置的情況下才能使用該命令。但Business.com卻錯誤地使用了“HTTP/1.1302 Object Moved”狀態碼。

其實網站重定向極為普遍,譬如不滿意原來的域名而申請了一個新域名;買下容易被人錯拼的域名,防止客戶因為拼錯URL而找不到網站,等等。可是,很多人卻會由於使用了錯誤的重定向狀態碼而遭“滅站之災”,就象Business.com。儘管他們的重定向理由充分合理,然而若使用不當,則可能被 Google誤認為是利用多個域名指向同一網站,那麼你的網站就會被封掉,罪名是“利用重複的內容來干擾Google搜尋結果的網站排名”。Business.com就是最好的前車之鑑。只不過大多數使用錯誤重定向引數的網站沒Business.com這麼幸運,一個小小的重定向就可能使網站前功盡棄,只能從頭來過:重新申請新域名,重新發布新網站,等等。記住:Google絕不會同情任何人即使無心犯下的錯誤。