兔源码网 - 专注DZ模版分享、DZ插件分享!

 找回密码
 立即注册

QQ登录

只需一步,快速开始

广告
温馨提示:本站所有DZ相关模板、插件、教程(包括DZ应用中心已下架插件、模板)皆为提供免费下载,无任何收费模式(不包括VIP版块非DZ资源,VIP版块需充值兔币购买会员组方可下载),用户仅需手动前往【申请下载权限】申请用户组下载权限即可,如本站没有您需要的插件或模板,请自行前往淘宝互站网送吗网等第三方站点搜索相关插件或模板进行低价格购买下载本站非常不建议用户浪费金钱前往DZ应用中心购买。

discuz门户文章实现伪静态,利于搜索引擎收录url的地址修改

[复制链接]
tuyuanma 发表于 2018-7-11 19:26:29 | 显示全部楼层 |阅读模式
温馨提醒:禁止内容附带广告图片、二维码图片,否则将在不通知情况下永久禁言账号!
欢迎加入兔源码站长交流群,您的加入是我们前行的动力!

DZ站长建站交流群:493651246

[ 温馨提示:点击上方群文字,可快速加入QQ群 ]


discuz门户文章实现伪静态,利于搜索引擎收录url的地址修改  U: [% I0 ~0 A! C

( c5 r" y  y4 g最近在捣鼓DZ框架,这两天发现文章的收录情况并不是太理想,做了很多优化方面的工作,今天主要解决了DZ门户的文章链接伪静态化,在这次修改之前,也做过一次在网上找的静态化修改,之前做的方式是:
* T" x  v# s% w2 `; U& n
1.jpg

. x2 v/ p% W' E% N/ Y2.在nginx的配置文件中,添加url的rewrite规则如下图,添加完规则后,在门户首页和频道列表中显示的url规则是:http://xxx.com/article-aid-page.html;其中aid是文章id,page默认都显示成了1,因为我的大部分文章基本就一页,这样的显示方式感觉怪怪的,所有的文章url几乎都显示成http://xxx.com/article-aid-1.html的形式,这种url显示既没有栏目列表页又有一个多余的页码page,从seo的角度考虑,这种url显示非常不利于百度搜索引擎的抓取,本身百度搜索引擎对dz的收录一直不太理想,就算百度抓取后,想通过这个链接返回到上一层,那只能是http://xxx.com/了,也就是你的首页了
  1.       rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;6 o; Q: `( k% Z4 J, ]
  2.       rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;5 R1 Q# j* |) {# b
  3.       rewrite ^([^\.]*)/(\w+)/([0-9]+)\.html$ $1/portal.php?mod=view&aid=$3 last;# F  r6 z1 c( A. L
  4.       rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
    8 l" Q0 \9 v6 T; _2 ]8 _
  5.       rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
    * n7 d7 t- H" [% q
  6.       rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
    5 A4 d- p% Y; J+ h0 k0 Y+ b
  7.       rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
复制代码
以前修改的discuz的门户url伪静态就是上面的显示形式,今天又研究了discuz的东西,最终实现了http://xxx.com/catname/aid.html,因为我的站点的文章都是一页,也就暂时没有考虑增加页码的实现(比如:http://xxx.com/catname/adi-page.html),这个以后用到的时候在研究吧,下面就说一下我的实现方式:
5 h  \  O$ V  O8 A: N# [' C6 z8 K# {9 T0 x. M4 u) C
1.通过分析,在频道列表模板(/template/default/portal/list.htm)中有如下代码进行数据的展示
  1.         <!--{loop $list['list'] $value}-->
    - |+ x8 ]$ v7 }# P$ x  K
  2.                                 <!--{eval $highlight = article_title_style($value);}-->2 b1 Y; q5 Y( d6 `8 u' p
  3.                                 <!--{eval $article_url = fetch_article_url($value);}-->5 U. w4 }& K. v2 }$ V( ^" @
  4.                                 <dl class="bbda cl">
    0 K% _- t) P& s' Z% D
  5.                                         <dt class="xs2"><a href="$article_url" target="_blank" class="xi2" $highlight>$value[title]</a> <!--{if $value[status] == 1}-->({lang moderate_need})<!--{/if}--></dt>
    / g1 A+ a6 [. V* o: V
  6.                                         <dd class="xs2 cl">1 W9 F  U! f0 V1 {% u# `
  7.                                                 <!--{if $value[pic]}--><div class="atc"><a href="$article_url" target="_blank"><img src="$value[pic]" alt="$value[title]" class="tn" /></a></div><!--{/if}-->' ~8 `6 w/ Y* v$ e" ~4 z
  8.                                                 $value[summary]
    : _2 H# Z6 ^' K/ `, u
  9.                                         </dd>/ l4 Z9 z/ t1 E8 u$ M6 z
  10.                                         <dd>
    # M6 w$ w0 B: h7 ?; h
  11.                                                 <!--{if $value[catname] && $cat[subs]}-->{lang category}: <label><a href="{$portalcategory[$value['catid']]['caturl']}" class="xi2">$value[catname]</a></label>  <!--{/if}-->0 a& \/ a8 D  Y  P" A: P1 I+ A0 ^
  12.                                                 <span class="xg1"> $value[dateline]</span>
    8 F3 }8 |7 `9 `/ m
  13.                                                 <!--{if $_G['group']['allowmanagearticle'] || ($_G['group']['allowpostarticle'] && $value['uid'] == $_G['uid'] && (empty($_G['group']['allowpostarticlemod']) || $_G['group']['allowpostarticlemod'] && $value['status'] == 1)) || $categoryperm[$value['catid']]['allowmanage']}-->
    ) b. j' D( O: E; {! [, j) e
  14.                                                 <span class="xg1">
    3 X4 |3 o' X6 `* Y
  15.                                                         <span class="pipe">|</span>
    & U$ L; Z* U! o4 U5 N6 p4 f3 E7 W
  16.                                                         <label><a href="portal.php?mod=portalcp&ac=article&op=edit&aid=$value[aid]">{lang edit}</a></label>
    , _2 s5 D: I8 \& |2 R- o' J
  17.                                                         <span class="pipe">|</span>
    9 a$ {+ A* C6 \* u4 e
  18.                                                         <label><a href="portal.php?mod=portalcp&ac=article&op=delete&aid=$value[aid]" id="article_delete_$value[aid]" onclick="showWindow(this.id, this.href, 'get', 0);">{lang delete}</a></label>
    3 t) }8 d* ?$ J0 ?+ u
  19.                                                 </span>- r' `. J" a; J4 B0 K9 I9 Y( Z
  20.                                                 <!--{/if}-->
    5 }- D- o; W6 D3 k* l/ }
  21.                                         </dd>; X1 D2 H0 I+ a8 r- V, |1 F
  22.                                 </dl>* p% ~! u# g' }
  23.                         <!--{/loop}-->
复制代码
其中fetch_article_url()这个函数是用来输出文章url的,此函数在文件/source/function/function_portal.php中
  1. function fetch_article_url($article) {
    ) x5 Z! a* }/ Z9 I+ J
  2.         global $_G;; \  V! p( L7 D1 e, R% A, s+ H
  3.         if(!empty($_G['setting']['makehtml']['flag']) && $article && $article['htmlmade']) {4 ^* Y3 b, c/ e; m. f' {, k
  4.                 if(empty($_G['cache']['portalcategory'])) {9 F( w, b% }: O; j$ v$ C4 x' f
  5.                         loadcache('portalcategory');; j7 E! p9 w( U: R
  6.                 }
    , B# G0 @; ~% I, S: w: M
  7.                 $caturl = '';
    4 V$ H8 j# @8 V6 E7 ~" D9 x& p
  8.                 if(!empty($_G['cache']['portalcategory'][$article['catid']])) {! L1 z( B1 |2 c) B$ B; T
  9.                         $topid = $_G['cache']['portalcategory'][$article['catid']]['topid'];3 t+ v# G5 v& V- P" I9 n
  10.                         $caturl = $_G['cache']['portalcategory'][$topid]['domain'] ? $_G['cache']['portalcategory'][$topid]['caturl'] : '';4 i% a) Q& R( b* Z: A: `
  11.                 }
    ; J- b8 H0 v" {
  12.                 return $caturl.$article['htmldir'].$article['htmlname'].'.'.$_G['setting']['makehtml']['extendname'];
    7 v) |8 p$ @" L& |' F3 Q
  13.         } else {9 A* K* L6 R) R# F2 [# e
  14. //add new start+ X1 c) q( I7 ^% e* \6 `7 V: U
  15.     $caturl = getportalcategoryurl($article['catid']);# o' ]! P; T# p& @* r- O
  16.     $arcturl = $caturl.$article['aid'].".html";
    * e& p- [1 l' p' m
  17.     return $arcturl;* j: |& R6 M& J3 u6 i
  18. //add new end2 O* ~  @& \! l0 J. Y% s
  19. //  return 'portal.php?mod=view&aid='.$article['aid'];
    0 Q1 A; w( I4 W( X2 b
  20.         }
    0 L/ v  `3 ^* D8 }" D
  21. }
复制代码
红色是框架自带的代码,蓝色是增加的代码,蓝色部分的作用就是通过catid获取到频道的地址,之后再拼接上文章的id.
) e1 R6 \# `4 J; k0 g3 D3 E3 H( Q1 M* ^( j  B0 x. a7 B3 D1 r8 f( k' @4 ~
2.修改完上面代码后,我发现频道列表页中的文章地址已经自动更换为http://xxx.com/catname/aid.html。点击访问出现404,出现404说明资源不存在或者url地址错误,接下来我们需要修改一下nginx中rewrite的规则如下,修改完重启nginx,在访问刚才的文章地址,一切正常,说明已经修改成功了。$ Z+ E, v* p' X
  1. + R5 W' Y- F" k9 \
  2.       #rewrite ^([^\.]*)/article-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2 last; //注释掉的是以前url重写规则
    . F/ L  P# X3 ?
  3.       rewrite ^([^\.]*)/(\w+)/([0-9]+)\.html$ $1/portal.php?mod=view&aid=$3 last;//新规则
复制代码

% k' |' t% U; a5 n! g; N. i3.有些人可能是DIY的门户首页,这时在diy模块中的文章地址还是http://xxx.com/artcile-aid-page.html,说明刚才的修改对diy模板不起作用。discuz现在的功能做的真是强大,不得不让人佩服,修改diy模板的显示非常的方便,如下标红处是我的修改,修改之前是{url},我们只需要把你每一个diy模板这块的地方都修改成{caturl}{id}.html,更新后,在访问试试看,是不是已经完全解决了。
. z4 g0 ?- ^+ g" l2 [
2.jpg
' n& i) l! t) K5 P: n- F* o& F
因为这次只修改了门户的文章url的规则,也没有做过多的测试,不知是否有遗漏,不过我大概点了页面上所有的显示文章的地方,没有出问题。说明这次修改还是有用的。

版权声明
1、转摘或引用本站内容资源须注明原网址,并标明本站网址(兔源码www.tuyuanma.com);
2、对于转摘或引用本站内容资源而引起的民事纠纷、行政处罚或其他损失,本站不承担责任;
3、对于不遵守本声明或其他违法、恶意使用本站内容者,本站保留其追究法律责任的权利。




自动排版 | 高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广告

兔源码网 ( 赣ICP备17001544号 公网安备36112102000036号 )

兔源码 QQ交流群:493651246  GMT+8, 2019-10-19 14:51
←站长统计工具 查看密码:tuyuanma

兔源码DZ模板下载 站长邮箱:tuyuanma@qq.com 站长QQ:3197813386 网站地图

© 2001-2013 本站内容皆来自互联网及用户分享,如需删除请提供软著或商标证书。

     
快速回复 返回顶部 返回列表