提示,这个版本是使用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/],原文链接:http://iove.net/archives/1044.html,网站转载请注明来源于涂雅并保留原文链接,否则视为侵权。
嗯,或者你也可以收听我的微博,腾讯微博(主要用这个,其他的看我的个人介绍)
我写博客常常出现错别字,常常错得还很离谱,有时候我自己看了第二遍都骂我自个儿,但我又不习惯重复审查,纠结啊...各位看到啥错别字或者不明白的地方,请给我留言指出来,感谢感谢。
gmail.com
最新评论