什麼是網頁設計?背景
認識網頁設計Q & A

認識網頁設計 - 網站內部SEO (On-Site)

轉址 - Redirection

轉址是將一個URL跳轉到另一個URL的過程。主要有三種轉址:301,302和meta refresh。

轉址的種類


  • 301永久轉址-SEO推薦使用

  • 302臨時(暫時)轉址

  • meta refresh跳轉


什麼是轉址?

轉址是一種將訪客和搜尋引擎,從原來的URL跳轉到不同的URL的方式,以下是轉址常用種類的敘述。

301Moved Permanently

301永久轉址是永久的轉址,它將90-99%的連結權重(排名能力)傳遞給轉址的網頁。

302 Found (HTTP 1.1) / Moved Temporarily (HTTP 1.0)

Google的一些員工表示,有些情況下,301和302可能會以類似的方式處理,但是我們的證據顯示,如果要確保搜尋引擎和瀏覽器不被影響,使用301永久轉址才是最安全的方法,網際網路也稱為超文本傳輸協議(HTTP)的協議,該協議規定了URL的工作方式,它有兩個主要版本1.0和1.1,在第一個版本中,302指的是狀態碼“Moved Temporarily-暫時移動”,這在版本1.1中改變為“Found-存在”。

307 Moved Temporarily (HTTP 1.1 Only)

307轉址是302轉址的HTTP 1.1後續,雖然主要的搜尋爬蟲在某些情況下會像302一樣處理,但在全部情況下還是最好使用301,只有當內容只是暫時移動(例如在維護期間)可以例外處理,並且伺服器已經被搜尋引擎確定兼容1.1版本。

Meta Refresh

Meta Refresh是一種在網頁層面,而不是伺服器層面上執行的轉址,他們通常比較慢,並且是SEO不推薦的技術,他們通常使用和倒數計時相關的文字一起使用如:“你如果沒有在五秒跳轉,請點擊這裡”,Meta Refresh也會傳遞一些連結權重,但不建議作為搜尋引擎優化技術使用,因為有可能流失過多的網頁權重。

SEO最佳實踐

一般要製作將一個URL轉址到另一個的時候,必需觀察是否有將遠本的網頁權重保留至另一個網頁是非常重要的。

如果需要把Page A 永久轉址到 Page B時,有多種方式可以選擇,但一般來說,301轉址對於用戶和搜尋引擎都是有用的,執行301來指示瀏覽器和搜尋引擎機器人網頁已經被永久(移動)轉址,搜尋引擎理解這意味著,不僅網頁移動了位置,而且內容(或更新版本)可以在新的URL中找到,搜尋引擎將從原始網頁連結到新的URL。

但是從一個URL移動網頁時,另一個搜尋引擎將需要一段時間才能發現301轉址並且承認它,並且將會評斷之前網頁的排名和信任度後再來評斷新的網頁的價值,如果搜尋引擎蜘蛛很少訪問特定的網頁,或者新的URL沒有正確解析過,這個過程可能會更長。

轉址的其它選項,如302s和meta refreshes,並不是好的替代方式,因為它們通常不會像301轉址那樣繼承排名和搜索引擎價值,唯一會使用如此轉址的原因可能是,網站管理員刻意不想讓舊的網頁權重繼承到新的網頁。

當整個網站都需要更新網址,或者內容必須從一個網址移到另一個新網址時,轉址的內容變得更複雜,由於垃圾郵件發送氾濫導致搜索引擎的質疑,所以網址之間的301轉址,有可能需要更多的時間才能被正確的掃描和計算。

由伺服器301轉址

提問:

當moz.com推出第一個網站seomoz.org時,當時它的網站網址是www.socengine.com/seo/,當時不是屬於自己的網址,當程式開發人員打算移到自己的專用伺服器上時,他們希望可以轉到為自己的網址,而不是在socengine.com/seo/的子目錄瀏覽,但是他們需要先訪問www.socengine.com/seo/中的網頁才能轉址到www.seomoz.org,轉址必須適應多個網頁和資料夾名稱的改變,並且必須用301轉址來完成,以便友善搜尋引擎,也需要轉址到http://seomoz.org,為美觀的目的並也避免規範化錯誤。

解說:

最簡單的方法就是將301轉址添加到PHP程式碼中,使用PHP的header表頭功能為seomoz.org提供轉址,也可以利用apache模組mod_rewrite的強大功能,開發人員明白apache有可以匹配整個資料夾的特定模式,並全部將其轉址到新的URL,不需要逐一撰寫每個PHP腳本。

操作:

如果要執行apache這個方式,Web伺服器需要安裝apache模塊mod_rewrite。

大多數apache已經預設安裝mod_rewrite,要檢查模組是否已安裝,開發人員可以將下行添加到apache的配置文件或.htaccess文件來驗證它是否運行中:


RewriteEngine On

背景執行

mod_rewrite模組在每個伺服器背景或每個資料夾中執行。

要在伺服器的背景執行,會要求開發人員必須可以編輯Apache的httpd.conf文件,需要在每個資料夾背景執行的話,每個資料夾是必須要有.htaccess文件,如果網站管理員不能訪問httpd.conf,他們將不得不使用.htaccess文件「使用.htaccess去阻止不需要的訪客到你的網站」。

正規表達式(又名正則表達式)

維基百科解說:

正規表達式是根據特定語法規則描述或匹配一組字符串的字符串,正規表達式被許多文件編輯器和實用程序用來根據特定模式來搜尋和操作文件主體。

正規表達式對程序員和系統管理員來說是一項寶貴的技能,要根據本文中的範例重定向URL,了解使用正規表達式的基本知識很重要,以下是描述正規表達式中使用的參數和運算參數的列表:


  • . 點-匹配任何事情

  • * 星號-匹配零個或多個前面的字符

  • + 加號-匹配一個或多個前面的字符

  • () 圓括號-用圓括號括起一個值,將存儲之後所使用的變量中匹配的內容

  • (value1|value2) 將兩個或多個值括在括號中,並用|字符分隔它們相當於說:“匹配值1或值2”


將特定網頁和資料夾從一個網址重定向到另一個網址

程式開發人員需要從舊伺服器重定向到相同網頁名稱的新伺服器。

範例

Redirect: http://www.socengine.com/seo/s... To: /somefile.php

實作

將以下程式碼添加到伺服器上的適當位置上:


RedirectMatch 301 /seo/(.*) /$1

說明

正規表達式/seo/(.*)告訴apache匹配seo資料夾,後跟零個或多個任何字符,圍繞括號中的*表示Apache將保存匹配的字符串作為反向引用,這個反向引用被放置在指向的URL的末尾,在這種情況下是$1。

主機名稱轉址規則

程式開發人員需要轉址任何不以www.seomoz.org開頭的請求(將沒有www開頭的seomoz.org網址),以確保他們包含www,他們這樣做不僅為了看起來更美觀,而且還可以避免常見的規範化錯誤

Redirect: http://seomoz.org/
To: http://www.seomoz.org/

Redirect: http://mail.seomoz.org/
To: http://www.seomoz.org

Redirect: http://seomoz.org/somefile.php To: http://www.seomoz.org/somefile...

實作

添加以下程式碼:


RewriteCond %{HTTP_HOST} *!^www*.seomoz.org [NC]
RewriteRule (.*) https://newscan.com.tw/$1 [L,R=301]

說明

這個程式碼告訴apache檢查訪客正在訪問的主機,如果它不是www.newscan.com.tw,則轉址到www.newscan.com.tw;www.newscan.com.tw前面的驚嘆號(!)為否定判斷,意思是說:“如果主機不是www.newscan.com.tw,則執行RewriteRule”,在目前的情況下,RewriteRule將它們轉址到www.newscan.com.tw,同時保持它們在後面引用的確定網頁名稱。

轉址後不保留網頁名稱

舊伺服器上存在的一些網頁在新伺服器上並不存在,舊網頁需要轉址到新網址的根網址,而不是在轉址中保留網頁名稱(這將導致新伺服器找不到網頁,而發生404錯誤)。

Redirect: http://www.socengine.com/seo/s...
To: http://www.seomoz.org/

實作

添加以下程式碼:


RedirectMatch 301 /seo/someoldfile.php http://www.seomoz.org

說明

省略任何括號,所有對/seo/someoldfile.php的請求都應該轉址到http://www.seomoz.org的根網址

轉址GET字串

一些PHP網頁有不同的名字,但GET字串保持不變,程式開發人員需要將訪問者轉址到新的PHP網頁,同時保留這些GET字串,GET字串是URL中的網頁名稱之後的字符集,用於將數據傳遞給網頁,URL /myfile.php?this=that&foo=bar中的GET字串的範例將是?this =&foo = bar。

Redirect: http://www.socengine.com/seo/c...
To: http://www.seomoz.org/artcat.p...

實作

添加以下程式碼:


RedirectMatch 301 /about/company.php(.*) https://www.newscan.com.tw/company.php$1

說明

正規表達式(.*)再一次告訴apache匹配零個或多個任何字符並將其保存為反向引用$1,由於company.php後面有$1,現在將把get字串轉址到這個新的PHP網頁。

轉址,改變副檔名

在原來的情況下,舊的伺服器上有混合了HTML和PHP的網頁的資料,在新的伺服器上,這些文件都是PHP,並且需要轉址邏輯來將舊的URL更改為新的副檔名。

Redirect: Redirect: http://www.socengine.com/seo/g...
To: To: http://www.seomoz.org/articles...

Redirect: http://www.socengine.com/seo/g...
To: http://www.seomoz.org/articles...

實作

添加以下程式碼:


RedirectMatch 301 /seo/guide/(.*).(php|html) http://www.seomoz.org/articles/$1.php

說明

(*.)匹配零個或多個任何字符並將其保存為反向引用 $1. .(php|html)告訴apache匹配結束,後跟“php”或“html”,並將其保存為反向引用$2(本例中不使用),注意跳脫字符的反斜線,這是為了確保apache不會把這個解釋為“任何事件”,將括號中的“php”和“html”括起來,並用“|”字符表示,以匹配其中一個值。 所以如果是(php | html | css | js | jpg | gif),那麼正規表達式將匹配任何帶有副檔名的php、html、css、js、jpg或者gif的檔案。

結論

通過使用mod_rewrite的能力和正規表達式的魔力,程式開發人員開發了一套簡單的轉址網頁的規則,通過使用301轉址,使用搜尋引擎友善的方式做到了這一點。


資料來源:https://moz.com/learn/seo/redirection

歡迎推廣本文,請務必連結(LINK)本文出處:新視野網頁設計