成功解决blog搬家后地址不对应的问题

本文介绍了一位博主从Z-Blog迁移到WordPress后遇到的URL变更问题及解决方案,包括如何通过PHP脚本实现旧URL到新URL的301重定向。

提示,这个版本是使用strpos来匹配地址,最新的版本已经改为正则表达式 请点击这里

我原来是使用z-blog的,现在改为wordpress,其实z-blog也是蛮不错的,不过wordpress有更多的插件,相对来说还是要好一些的:)

升级wordpress之后,网站由原来的http://iove.net/post/id.html改为现在的http://iove.net/id,而且经过数据导入之后,ID已经有所变更,所以原来的URL和现在的URL不一致了,导致别人在访问我的网站的时候,有些文章访问不到。而且最锉的是,百度居然不收录我的网站的更新,我记得以前我网站一更新,总是百度先收录,Google一般要后那么一两周,现在倒是怪了,百度收录我的网站还是几个月前的链接,而Google在我更新后几天就收录了。

我认为对于中文网站的收录,百度要优于Google,但这次不知道为什么会这样,不晓得是我的网站放在国外,百度对国外的网站收录有歧视,还是因为我的网站有所谓的“敏感词”呢?

没办法了,做为一个Iter,自然要想办法解决,既然原有的id和现有的id有一一对应的关系,那为什么不使用网址转向呢?godaddy是支持自定义404错误页面的(其它服务商一般也都支持,国内就不一定了),当页面找不到的时候,可以在404页中做文章啊,基本思路如下:

  1. 设置自定义404页面
  2. 在404页面判断网址是否为/post/id.html
  3. 用一个数组(我的文章不多,如果多的话可以考虑使用数据库建表)保存旧id与新id的对应关系
  4. 从网址中分析出旧id,并根据旧id取出新id
  5. 重组网址,用header重定向(301)新网址

我第一次写php代码,代码写的就不咱的了,看官就不要怪了,其实如果用正则,代码将会非常简单,可是我硬是没找到php怎么用正则抽取捕获组,知道的朋友不妨告诉我一下,非常感谢。

$url = $_SERVER['REQUEST_URI'];
$u = strpos($url,'/post/');
//原来的文�
if(empty($u) != false)
{
	$id = str_replace('/post/', '', $url);
	$id = str_replace('.html', '', $id);
	//if(!is_int($id)) return;
	$id  = (int)$id ;
	$array = array(1=>'685',2=>'686',3=>'687');
	$url = 'http://iove.net/'.$array[$id];
        //重定向
	$url = 'Location:'.$url;
	header('HTTP/1.1 301 Moved Permanently');
	header($url);
	return;
}
//原来的标签
$u = strpos($url, 'catalog.asp?tags=');
if(empty($u) != false)
{
	$tag = str_replace('/catalog.asp?tags=', '', $url);
	$url = 'http://iove.net/?tag='.$tag;
	$url = 'Location:'.$url;
	header('HTTP/1.1 301 Moved Permanently');
	header($url);
	return;
}
  

注意:本文为我的独立博客镜像博客,自发表不再更新,原文可能随时被更新,敬请访问原文。同时,请大家不要在此评论,如果有什么看法,请点击这里:http://iove.net/1705/

本文来自http://iove.net,欢迎转载,转载敬请保留相关链接,否则视为侵权,原文链接:http://iove.net/1705/

转载于:https://www.cnblogs.com/conis/archive/2009/08/18/1720490.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值