程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> apache+php完美解決301重定向的兩種方法

apache+php完美解決301重定向的兩種方法

編輯:PHP綜合
幸好有301重定向能有效解決這樣的問題。正如月光博客這篇文章中說的,
301重定向可促進搜索引擎優化效果
從搜索引擎優化角度出發,301重定向是網址重定向最為可行的一種辦法。當網站的域名發生變更後,搜索引擎只對新網址進行索引,同時又會把舊地址下原有的外部鏈接如數轉移到新地址下,從而不會讓網站的排名因為網址變更而收到絲毫影響。同樣,在使用301永久性重定向命令讓多個域名指向網站主域時,亦不會對網站的排名產生任何負面影響。

關於301重定向的更多內容,大家不妨Google一下。本文只介紹實現方法啦!
301重定向的實現,我以前也寫過一篇相關的文章,但這篇文章的解決方法比較簡單,只能實現主頁的跳轉,本文介紹的這兩種方法,可以完美實現301重定向。

方法1:修改.htaccess文件
代碼如下:
復制代碼 代碼如下:
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} blog.iflyhigher.tk$ [NC]
RewriteRule ^(.*)$ http://blog.jb51.net/$1 [R=301,L]
RewriteCond %{HTTP_HOST} iflyhigher.tk$ [NC]
RewriteRule ^(.*)$ http://jb51.net/$1 [R=301,L]
RewriteCond %{HTTP_HOST} moiya.tk$ [NC]
RewriteRule ^(.*)$ http://jb51.net/$1 [R=301,L]
</ifmodule>

本博需要對三個域名進行重定向,所以寫的比較多,關鍵代碼就是2句話
復制代碼 代碼如下:
RewriteCond %{HTTP_HOST} blog.iflyhigher.tk$ [NC]
RewriteRule ^(.*)$ http://blog.jb51.net/$1 [R=301,L]

紅色的域名是需要被重定向的舊域名,綠色的是現在網站的域名。
方法2:使用PHP的重定向代碼
新建一個index.php文件,然後參考下面代碼按自己的重定向要求做簡單修改:
復制代碼 代碼如下:
<?php
$the_host = $_SERVER['HTTP_HOST'];
$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
switch ($the_host)
{
case "www.iflyhigher.tk":
case "iflyhigher.tk":
$location = "Location: http://jb51.net" . $request_uri;
break;
case "blog.iflyhigher.tk":
$location = "Location: http://blog.jb51.net" . $request_uri;
break;
case "www.moiya.tk":
case "moiya.tk":
$location = "Location: http://jb51.net";
break;
default:
$location = "Location: http://jb51.net";
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 !== 'jb51.net')//jb51.net是我現在的域名
{
header('HTTP/1.1 301 Moved Permanently');//發出301頭部
header('Location: http://jb51.net'.$request_uri);//跳轉到我的新域名地址
exit();
}
?>

注意,最後的exit()函數是一定要寫的,我最初就沒有寫,結果只能重定向首頁,像http://blog.iflyhigher.tk/guestbook這樣的網頁,就無法進行重定向。
最後,關於重定向的一些細節
由於要對三個域名進行重定向,重定向前,我首先將這三個域名作為Addon Domain綁定到我的服務器上去,並讓這三個域名指向同一個文件夾,這樣,只要修改這一個文件夾中的.htaccess文件或者index.php文件就可以了。如果沒有.htaccess文件或者index.php文件,新建一個即可。
希望本文對需要進行301重定向的朋友有幫助。
轉載請表明出處: Gevin的博客
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved