[SEO技巧]靜態網頁如何正確設定301轉址(REDIRECT)?

網路上有許多動態網頁執行301轉址 (redirect)的教學,卻少有靜態網頁(.html)301轉址的文章,導致有些人往往以為靜態頁面無法加入程式碼來設定301轉址,而沒辦法正確的將舊頁面權重轉移到新頁面上,因此我們要教大家如何讓靜態頁面也能使用301轉址。
 
我們列出三個常見的靜態網頁301轉址狀況來說明:
 
301轉址常見狀況一]
若是你的靜態網頁放置在Apache主機上,那麼可以透過在.htaccess文件中添加301轉址的語法進行轉址。
 
.htaccess 301 redirect語法如下:
redirect 301 http://old-domain.com http://new-domain.com
其中old-domain.com表示轉址前的網址,new-domain.com為轉址後的新網址。
 
.htaccess一般存放網站根目錄中,若是沒有則須自行建立。由於在windows下無法建立以點開頭為副檔名,故可先建立htaccess.txt的文字檔並將301轉址的代碼貼上,上傳到FTP的網站根目錄後,再將檔名更換為.htaccess即可,權限設定為644。
 
註:若Apache不支援.htacces 則須與你的主機商聯絡(web hosting)。
 
[301轉址常見狀況二]
若是你的靜態網頁放置在Windows主機上,則須從IIS中設定。

圖一.IIS設定視窗
圖一.IIS設定視窗

 

  • 步驟:
    1. 在IIS面版下,在網站名稱上按右鍵點選”內容”
    2. 點選主目錄分頁,選擇”某個URL位址的重新導向”
    3. 導向到:後面的欄位填入新網址 http://new-domain.com
    4. 將”這個資源的永久重新導向”打勾
    5. 按下”確定”

如此就完成了IIS上的301轉址,不需在網頁中加入任何程式。
 
若網站放在虛擬主機,則須請你的主機商(web hosting)幫你設定。
 
[301轉址常見狀況三]
若Apache不支援.htaccess或使用Windos主機商無法幫你設定,那靜態頁面的轉址就只能透過在index.html添加meta refresh tag和標準連結元素(canonical tag)來達成301轉址。
 
語法如下:
<meta http-equiv=”refresh” content=”0; url=http://new-domain.com/” />
<link rel=”canonical” href=”http://new-domain.com” />
 
Meta Refresh容易被誤會成作弊(SEO SPAM)?
對SEO稍有研究的人或許對meta refresh的使用有些擔心,怕會讓搜尋引擎誤判為作弊。根據我們的操作經驗,其實只要正確的使用,並不用太擔心。因為我們不是故意製造一些用來取得排名的頁面再轉到不相干的網址,而且Yahoo對於meta refresh的看法相當於301轉址,但Google會視為302,故還須加上標準連結元素告訴搜尋引擎new-domain.com才是真正需要被索引的網址。
 
最後再補充一個SEO小技巧:
若是你的空間支援PHP、ASP、ASP.NET等,那麼你大可將index.html改為index.php,再置入各程式的301轉址語法來進行轉址。(如下)
 
PHP 301 Redirect
<?
Header( “HTTP/1.1 301 Moved Permanently” );
Header( “Location: http:// new-domain.com” );
?>
 
ASP 301 Redirect
<%@ Language=VBScript %>
<%
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”,”http://new-domain.com/”
%>
 
ASP.NET 301 Redirect
<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>
 
JSP 301 Redirect
<%
response.setStatus(301);
response.setHeader( “Location”, “http://www.new-url.com/” );
response.setHeader( “Connection”, “close” );
%>
 
需注意的是此做法只適用於首頁,因為首頁可省略index.php,雖然將index.html改為php,但是內頁回首頁還是會連到http://domain.com/,且全站每頁的回首頁連結皆需設定為http://domain.com/ 才能維持網址的一致性。
 
雖然最後這個方式不是標題所說的靜態網頁的301轉址,但也是解決靜態頁面轉址的一種方法不是嗎?(笑)