提示,这个版本是使用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页中做文章啊,基本思路如下:
- 设置自定义404页面
- 在404页面判断网址是否为/post/id.html
- 用一个数组(我的文章不多,如果多的话可以考虑使用数据库建表)保存旧id与新id的对应关系
- 从网址中分析出旧id,并根据旧id取出新id
- 重组网址,用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/