茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1498570 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
PIMG_00062.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2008/11/3 8:06:27
[WEB][PHP][SEO] 轉導、轉向(Redirect)網址的方法

在將網站更換成新網址的情況下,可能會在舊網址上使用到一些『轉導網址』的方法,以便將原本的使用者及其流量引導到新的網址去。
以下整理、討論到幾種轉導(Redirect)網址的技術方法,並且探討該方法對 SEO 的影響:

1. 使用 HTTP 通訊協定 301 Moved Permanently 來完成轉導網址 (永久轉址)
(建議使用,不會對 SEO 有不良影響)

o PHP 程式範例:
<?php
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://www.new-url.com/");
?>
<p>The document has moved <a target="_blank" href="http://www.new-url.com/">here</a>.</p>

註1:
使用者的瀏覽器必須根據 HTTP header 的 Location 欄位值(稱做URI)來轉導網址。
註2:
除非 Request Method 是 HEAD,不然伺服器端回覆的訊息內必須包含一短的新網址的連結(hyperlink)資訊。

o ASP 程式範例:
<%@ Language=VBScript %>
<%
    Response.Status="301 Moved Permanently"
    Response.AddHeader "Location", " http://www.new-url.com/"
    Response.End
%>
<p>The document has moved <a target="_blank" href="http://www.new-url.com/">here</a>.</p>

o ASP.NET 程式範例:
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
    Response.Status = "301 Moved Permanently";
    Response.AddHeader("Location","http://www.new-url.com/");
}
</script>
<p>The document has moved <a target="_blank" href="http://www.new-url.com/">here</a>.</p>

o 在 .htaccess / httpd.conf 檔案中設定 -- 轉整個 domain
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*) http://www.new-domain.com/$1 [R=301,L]

o 在 .htaccess / httpd.conf 檔案中設定 -- 轉到新的 www.
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{http_host} ^old-domain.com [NC]
RewriteRule ^(.*)$ http://www.new-domain.com/$1 [R=301,NC]

2. 使用 HTTP/1.1 通訊協定 302 Found 來完成轉導網址
(不建議使用,會對新網站 SEO 有不良影響)

o PHP 程式範例:
<?php
    header("HTTP/1.1 302 Found");
    header("Location: http://www.new-url.com/");
?>
<p>The document has moved <a target="_blank" href="http://www.new-url.com/">here</a>.</p>

(...其他 ASP, ASP.NET 程式及設定 .htaccess/httpd.conf 方法,此處略 ...)
註1: 302,
在 HTTP/1.0 是『Moved Temporarily』;HTTP/1.1 是『Found』,會根據 HTTP header 的 Location 欄位值(稱做URI)來轉導網址。但是很多網路上的文章會直接稱 302 是 Moved Temporatily。
註2:
除非 Request Method 是 HEAD,不然伺服器端回覆的訊息內必須包含一短的新網址的連結(hyperlink)資訊。
註3:
HTTP 1.1 中增訂了 『307 Temporary Redirect』,307 碼時只會根據 GET Request 轉導網址。
註4:
更多的 HTTP 302 細節和 307 會被再增訂出來的原因請參考這裡。

3. HTML 的 refresh meta tag 來轉導網址
(非常不建議使用,會對新網站 SEO 有不良影響。有些文章寫說要用時最好秒數設定大於 10 秒以避免對頁面的 SEO 不利。)

o 在 HTML 檔案的 HEAD 中,範例:
<html>
<head>
    <meta http-equiv="refresh" content="0;url=http://www.new-url.com/" />
</head>


4. 用 JavaScript 來達到轉導網址 (放在 HTML 的 ... 或 ... 中
(因為搜尋引擎的 bot 一般都不理會 JavaScript,所以做什麼動作不會被檢查。這意味著要實做『點擊計算(click counting)後再轉導到目的網址的話,用這個方法比較好(302 或 refresh 都是不好的方法)』)
(如果使用者按瀏覽器的『上一頁』按鈕,不會跳回轉導頁面。)

o 直接在 HTML 的 HEAD 中用轉導網址 JavaScript 範例:
<html>
<head>
<script language="JavaScript">
<!--
    window.location.replace("http://www.new-url.com");
//-->
</script>
</head>
</html>

o JavaScript 內容同上例,但是把它放到外部的一個 .js 檔案,然後 ... 中只要寫:
<html>
<head>
    <script language="JavaScript" src="redirect.js"></script>
</head>

o 也是使用 JavaScript,但是額外透過『表單』來完成:
(因為搜尋引擎的 bot 一般都不理會『表單』,所以做什麼動作不會被檢查。)
<script language="JavaScript">
<!--
    document.myform.submit();
//-->
</script>
<form name="myform" action="http://www.new-url.com/" method="get"></form>


--------------------------------------------------------------------------------

額外討論:

  1. 301/302 有時會被一些人用作旁門走道方法,在玩『PR劫持』(如這篇文章所述),更多的一些手法討論請看這篇文章或用 hijack 當 KeyWord 去查查。

  2. 302 在之前會造成 bot 誤以為是轉導到的網站在惡搞,而將轉導到的網站從索引中除名。所以會變得無法防止別人以此方法攻擊自己的 URL。現或許已更正。(詳情請看這裡)

  3. 當然,refresh 也能如上述 302 一樣去惡搞別人的網站。


原文出處:[WEB][PHP][SEO] 轉導、轉向(Redirect)網址的方法. - 諸彼特租屋網
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|