從搜索引擎優化角度出發,301重定向是網址重定向最為可行的一種辦法。當網站的域名發生變更後,搜索引擎只對新網址進行索引,同時又會把舊地址下原有的外部鏈接如數轉移到新地址下,從而不會讓網站的排名因為網址變更而收到絲毫影響。同樣,在使用301永久性重定向命令讓多個域名指向網站主域時,亦不會對網站的排名產生任何負面影響。
一般來說,有以下兩種方法可以實現301重定向。
代碼如下:
RewriteEngine On RewriteCond %{HTTP_HOST} bkjia.com$ [NC] RewriteRule ^(.*)$ http://bkjia.com/$1 [R=301,L] RewriteCond %{HTTP_HOST} bkjia.info$ [NC] RewriteRule ^(.*)$ http://bkjia.com/$1 [R=301,L]
關鍵代碼就是2句話:
RewriteCond %{HTTP_HOST} bkjia.com$ [NC] RewriteRule ^(.*)$ http://bkjia.com/$1 [R=301,L]
上面的域名是需要被重定向的舊域名,下面的是現在網站的域名。
新建一個index.php文件,然後參考下面代碼按自己的重定向要求做簡單修改:
<?php $the_host = $_SERVER['HTTP_HOST']; $request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''; switch ($the_host) { case "www.bkjia.tk": case "bkjia.tk": $location = "Location: http://bkjia.com" . $request_uri; break; case "blog.bkjia.tk": $location = "Location: http://blog.bkjia.com" . $request_uri; break; case "www.moiya.tk": case "moiya.tk": $location = "Location: http://bkjia.com"; break; default: $location = "Location: http://bkjia.com"; break; } header('HTTP/1.1 301 Moved Permanently'); header($location); exit(); ?>
如果只要對一個域名進行重定向,可以把代碼簡化成下面的形式:
<?php $the_host = $_SERVER['HTTP_HOST'];//取得進入所輸入的域名 $request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';//判斷後面的請求部分 if($the_host !== 'bkjia.com')//bkjia.com是我現在的域名 { header('HTTP/1.1 301 Moved Permanently');//發出301頭部 header('Location: http://bkjia.com'.$request_uri);//跳轉到我的新域名地址 exit(); } ?>
注意,最後的exit()函數是一定要寫的,我最初就沒有寫,結果只能重定向首頁,像http://www.bkjia.com/guestbook這樣的網頁,就無法進行重定向。
最後,關於重定向的一些細節:如果要對三個域名進行重定向,重定向前,首先將這三個域名作為Addon Domain綁定到我的服務器上去,並讓這三個域名指向同一個文件夾,這樣,只要修改這一個文件夾中的.htaccess文件或者index.php文件就可以了。如果沒有.htaccess文件或者index.php文件,新建一個即可。