網頁如何以 301 Redirect 重導向
網站的管理中,有時會遇到需要對於網頁進行重新導向的情況,譬如:網站的內容調整、變更網頁的目錄結構、網頁遷移到一個新的位址、或者是網頁的附屬檔名變更,譬如把 .php 的網頁變成為 .html 或 .htm 。在這些情況下,若不做網頁的重導向,用戶的書籤、其他網頁的連結、或者是搜索引擎原先已索引的網址都會變成無法找到原有的網頁。訪問舊網址時會因而得到 404 查無資料的錯誤訊息。如此,當然會造成訪問流量的損失,甚至於網頁的位階也會受到影響。很難估計,究竟要花多久的時間,才能恢復舊觀。尤其是,有些網站可能註冊了許多網名,更是需要經由重導向的方式來使訪問不同網名的訪客,自動的轉讀主網名的網頁。
一般來說,常用的重導向的方法有: 301 redirect, 307 redirect 與 meta fresh:
- 301 redirect:301 重導向是一種永久性的 URL 轉移 (Permanently Moved)。對於搜索引擎而言,301重導向是網頁轉址的最好表達與操作方式。
- 307 redirect:307 重導向是一種暫時性的 URL 轉移 (Temporarily Moved )。很不幸,這種重導向的方式曾被用來做為欺騙搜索引擎作弊的手段之一。因此,目前若再採用 307 重導向的方式,很容易被引擎誤判為 spam 而被處罰。
- meta fresh:這種方式以前我很常用。是在網頁的 meta 指令中,指定一定的時間後轉址到新的網頁。但,我使用時不太瞭解指定的時間短過 5 秒之內,會有被引擎誤判為 spam 的危機。因而,吃了不少悶虧。
以上三種方式,我們只談 301 Redrict 的設定方式。
Apache Server 301 重導向的設定
在Apache中,有個很重要的檔案 .htaccess。管理過自己網站的管理員,很早就會接觸到這一檔案的使用需求。301重導向只是其諸多使用功能之一。
Redirect permanent / http://bbs.newdomain.com/ ;將主目錄下的內容重導向到 http://bbs.newdomain.com/
redirect permanent /old.html http://bbs.newdomain.com/new-url/ ;將 old.html 網頁重導向到 http://bbs.newdomain.com/new-url/
經由重導向參數的正規表達式(Regular Expressions),可完成更複雜的匹配。有興趣的朋友可參考 Apache 的手冊。
PHP下的301重導向
<? Header( “HTTP/1.1 301 Moved Permanently” );
Header( “Location: http://bbs.newdomain.com” );?>
重新改寫過後,要確實的檢查是否都改對了。網路上有許多類似 Server Header 的檢查工具,如:
Check Server Headers Tool - HTTP Status Codes Checker












