用 Linux 主機的網站可以通過.htaccess 做 301 跳轉,這個大家都很清楚。

如果能對.htaccess 的規則非常瞭解的話,那麼使用起來肯定得心應手。但是如果不熟悉的話,只能做到只是更換域名不更換文件路徑的跳轉。比如從 a 域名跳轉到 b 域名,只能做到類似 a 域名/123.html 到 b 域名/123.html 。

但是如果從 zblog 遷移到 WordPress 博客程序,那麼就需要比如從類似於 http://blog.cocold.com/post
/25.html
跳轉到 http://blog.icoa.cn/25.html 和從 http://blog.cocold.com
/catalog.asp?tags=301 跳轉到 http://blog.icoa.cn/tag/301 等這種更換了域名並更換了博客平台的情況來説就無能為力了。

安裝了 WordPress 的朋友都知道,WordPress 支持 URL 靜態化。實現的方法就是通過在網站根目錄自動創建一個.htaccess 的文件,實現所有的 url 都指向首頁 index.php 。然後在通過首頁 PHP 代碼的解析來顯示不同的內容。

於是我將 blog.cocold.com 指向一個 linux 主機,然後在網站根目錄創建.htaccess,把 WordPress 創建的.htaccess 內容複製出來放進去:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

然後新建一個 index.php 放到根目錄下,index.php 的內容如下:

<?php
$pageurl=str_replace("/post", "", $_SERVER[REQUEST_URI]);
$pageurl=str_replace("/catalog.asp?tags=", "/tag/", $pageurl);
$pageurl=str_replace("&amp;page=", "/page/", $pageurl);
$pageurl=str_replace("/catalog.asp?date=", "/date/", $pageurl);
$pageurl=str_replace("-", "/", $pageurl);

Header("HTTP/1.1 301 Moved Permanently");
header("location: http://blog.icoa.cn/".$pageurl);
?>

這樣就可以實現下面的跳轉:

http://blog.cocold.com/post/25.html 跳轉到 http://blog.icoa.cn/25.html
http://blog.cocold.com/catalog.asp?tags=301 跳轉到 http://blog.icoa.cn/tag/301
http://blog.cocold.com/catalog.asp?date=2011-5 跳轉到 http://blog.icoa.cn/date/2011/05
……
如果還有其他路徑依然可以寫進去。

原文地址:逍遙博客 http://blog.icoa.cn/411.html,轉載請註明出處!