2010-06-18 01:52

给discuz加canonical URL标签,规范化网址

给discuz加canonical URL标签,规范化网址

 
Discuz的网址规范化有很多问题,即同样的内容,有着好多不同的URL。下面使用canonical URL TAG新标准来处理这些问题。

一,给viewthread.php页加canonical URL

可以发现这种动态的链接形式最多了,有不同的参数但内容一样,当然现在的SE能够处理这些问题,但但很难判断首选显示URL方式,或者当他们都有返回链接时,不能集中权重。为了解决类似的重复网页问题,googel,yahoo,live,ask.com都宣布支持一个新的标签属性,以把链接和权重都集中到一个首先的URL上。

1.给viewthread.php加canonical URL标签,指定帖子的静态地址为首选版本。

修改viewthread.php文件,在$page = max($page, 1);上面(程序调用包含文件结束),加一行$extrahead .='<link rel="canonical" href="thread-' .$tid. '-1-1.html" />';

2.给打印页加canonical tag
虽然打印页viewthread.php?action=printable.....也是调过这个程序生成数据,但用了不同的模板,要把变量$extrahead 加进去,修改tmplates\default\viewthread_printable.htm
在<head>部分<title>的下面加一行: $extrahead

二.给forumdisplay.php加canonical tag
在include template('forumdisplay');上加一行:
$extrahead .='<link rel="canonical" href="forum-' .$fid. '-' .$page. '.html" />';

三.为archiver页加link canonical标签

1.修改archiver/index.php:在global $boardurl, $_DCACHE, $charset, $navtitle, $headerbanner, $headernav;行下加一行:global $extrahead;
在<meta http-equiv="Content-Type" content="text/html; charset={$charset}" />
行下加一行:$extrahead

2.修改archiver\include\thread.inc.php:此文件中有两个showheader();,在第二个的上面加一行:$extrahead .='<link rel="canonical" href="thread-' .$tid. '-1-1.html" />';

四.将archiver内容页最下的“本看完整版本”链接改为静态形式
修改archiver/include/thread.inc.php,将 "viewthread.php?tid=$tid"替换为"thread-{$tid}-1-1.html"

如果您是以动态URL形式为首先版本,上述相应位置应替换为如下语句:
$extrahead .='<link rel="canonical" href="viewthread.php?tid=' .$tid. '" />';
 

 

 

  
 1.给viewthread.php加canonical URL标签,指定帖子的静态地址为首选版本。
修改viewthread.php文件,在$page = max($page, 1);上面(程序调用包含文件结束),加一行$extrahead .='<link rel="canonical" href="thread-' .$tid. '-1-1.html" />';


请教小工,如果我的静态页不是thread-$tid-1-1.html这种形式的,而是:“贴子标题-$tid-1-1.html”这样的格式,那么需要把
$extrahead .='<link rel="canonical" href="thread-' .$tid. '-1-1.html" />';
这句里面的“thread”换成什么呢?

 

 

帖子标题是$thread['subject'],按你的格式就是 $extrahead .=
'<link rel="canonical" href="'. $thread['subject'] . '-' .$tid. '-1-1.html" />';
不过你的程序将帖子标题做为URL一部分,肯定要对$thread['subject']进行规范化处理,可以看看程序,用处理后的变量才准确。
 
 
 
 
帖子标题是$thread['subject'],按你的格式就是 $extrahead .=
'';
不过你的程序将帖子标题做为URL一部分,肯定要对$thread['subject']进行规范化处理,可以看看程序,用处理后的变量才准确。 ...
谢谢,目前我的url没经过任何处理,直接用的$thread['subject'],
想问下,如果以后要是对$thread['subject']进行了encode:

将要加入url encode的globalfunc.php文件的rewrite部分是这样写的:
  1. function rewrite_thread($tid, $page = 0, $prevpage = 0, $extra = '') {
     
  2.         global $db,$tablepre;
     
  3.         $subject=$db->result_first("SELECT `subject` FROM `{$tablepre}threads` WHERE `tid` =$tid LIMIT 0 , 1");
     
  4.         $subject=urlencode($subject);
     
  5.         return '<a href="'.$subject.'-'.$tid.'-'.($page ? $page : 1).'-'.($prevpage && !IS_ROBOT ? $prevpage : 1).'.html"'.stripslashes($extra).'>';
     
  6. }
复制代码
那是不是要将viewthread.php的canonical URL标签改成如下:
$extrahead .=
'<link rel="canonical" href="'. urlencode($thread['subject']) . '-' .$tid. '-1-1.html" />';

请指教
 
 
 
 
 
 
 
我的是dz6.0,,根据这个代码
  1. 修改viewthread.php文件,在$page = max($page, 1);上面(程序调用包含文件结束),加一行$extrahead .='<link rel="canonical" href="thread-' .$tid. '-1-1.html" />';
复制代码
修改后,,帖子打不开了,是怎么回事?????????
 
 

 

 
 
 
 
二.给forumdisplay.php加canonical tag
在include template('forumdisplay');上加一行:
$extrahead .='<link rel="canonical" href="forum-' .$fid. '-' .$page. '.html" />';
你好,我用的7.2版本 在forumdisplay.php中没有找到include template('forumdisplay');哦 有处
include template('forumdisplay_passwd');   还有处include template('forumdisplay_simple'); 这个要改哪处呢?
 
 
 
 
 
 
 
disczu 7.2 放在最后一行的上面就行。你测试一下吧。

它加了个变量,按条件会调用两个模板,所以没有直接写那个模板名。
$template = $sortid ? 'forumdisplay_sort' : 'forumdisplay';

添加新评论