wp-pagenavi分页插件使用trim函数去除斜杠/

作者 FarLee 2010年4月18日 1:27:35   ‖浏览(10,517)

今天使用百度搜索 eclipse-php-galileo-SR2-linux-gtk.tar.gz 时发现百度同时收录了两个一样的页面。仔细一看确实是同一个WordPress博客的文章分类页面,只不过一个url末尾加上了斜杠/,另外一个没有加斜杠。

WP-PageNavi 分页插件引起的重复页面

在利用IIS ISAPI Rewrite 筛选器进行URL 重写,生成Wordpress博客的文章日志分类的永久固定链接时,我没有设置重写后的url后面带有斜杠,所以就生成了类似http://h.farll.com/cat/web这样的固定链接。那么带有斜杠的链接是从哪里冒出来的呢?

打开博客才发现是由于前段时间安装WP-PageNavi分页插件,当日志文章分类页面翻到第二页等其他页面时,WP-PageNavi分页插件生成的第一页的固定链接就包含了斜杠/,形如http://h.farll.com/cat/web/。同样,WordPress文章标签tag页面也是有这个问题。

因为带有斜杠和没有带斜杠的url网址会被搜索引擎认为是不同的两个网页,所以会造成重复页面过多,对搜索引擎不友好,从SEO角度考虑应当将这两个url统一起来。如果修改url重写规则,在后面加上反斜杠,那么以前留下的那些超级链接全都不好办了,所以只能修改WP-PageNavi分页插件,将url后的斜杠去掉。

如何去除wp-pagenavi分页插件url斜杠/

进入WordPress管理后台–插件–选择wp-pagenavi–编辑–文件wp-pagenavi/wp-pagenavi.php。看到php文件中代码<a href="'.clean_url(get_pagenum_link()).'" title="'.$first_page_text.'">'.$first_page_text.'</a>,分页页面的url是由get_pagenum_link()函数取回的。所以修改wp-includes/link-template.php文件中的get_pagenum_link()函数即可。

在1323行(wordpress 2.91)找到  $request = ltrim($request, '/');

ltrim函数ltrim(string)是将字符串前面(左边)的空白或空格、以及斜杠”/”等字符去除;和这个函数同样功能的还有rtrim和trim,rtrim函数rtrim(string)将字符串末尾(右边)的字符去除;trim函数则可以去除字符串两边的斜杠”/”等字符。以trim(string,charlist)为例,string参数为字符串,charlist参数可选,指定要去除的字符,若没有指定,则空格(NULL)、制表符(TAB)、换行符”n”等都会被删除。

所以要去除wp-pagenavi分页插件生成的url末尾的斜杠,将$request = ltrim($request, '/');改为trim函数即可:$request = trim($request, '/');

另外一种方法是该函数中的

$result = apply_filters('get_pagenum_link', $result); (第1337行-wordpress 2.91)

这行代码前面插入

if ($result[strlen($result)-1]==”/”) $result = substr($result,0,strlen($result)-1);

这种方法可能会将博客首页地址入http://h.farll.com/末尾的斜杠去掉,有兴趣的朋友可以试下。


“wp-pagenavi分页插件使用trim函数去除斜杠/”文章评论(4)

  1. 像我這種百度不收錄的博客表示毫無影響

  2. 看来要注意这方面的问题

  3. 原来这样 记下了 如果出现同时收录2篇的情况 我再照着改

  4. 目前用的非插件版翻页

来说兩句