友声网

 找回密码
 立即注册
搜索
开启左侧

[静态化] Discuz! X3 门户文章实现伪静态,利于搜索引擎收录url的地址修改

[复制链接]
admin 发表于 2018-7-6 22:49 | 显示全部楼层 |阅读模式
    这两天发现文章的收录情况并不是太理想,做了很多优化方面的工作,今天主要解决了DZ门户的文章链接伪静态化,在这次修改之前,也做过一次在网上找的静态化修改,之前做的方式是:
1.在DZ管理后台->全局->seo设置->url静态化模块中,开启如下配置

2.在nginx的配置文件中,添加url的rewrite规则如下图,添加完规则后,在门户首页和频道列表中显示的url规则是:https://www.ys166.com/article-aid-page.html其中aid是文章id,page默认都显示成了1,因为我的大部分文章基本就一页,这样的显示方式感觉怪怪的,所有的文章url几乎都显示成https://www.ys166.com/article-aid-1.html的形式这种url显示既没有栏目列表页又有一个多余的页码page,从seo的角度考虑,这种url显示非常不利于百度搜索引擎的抓取,本身百度搜索引擎对dz的收录一直不太理想,就算百度抓取后,想通过这个链接返回到上一层,那只能是https://www.ys166.com/了,也就是你的首页了
  1. rewrite ^([^.]*)/topic-(.+).html$ $1/portal.php?mod=topic&topic=$2 last;
  2. rewrite ^([^.]*)/article-([0-9]+)-([0-9]+).html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
  3. rewrite ^([^.]*)/(w+)/([0-9]+).html$ $1/portal.php?mod=view&aid=$3 last;
  4. rewrite ^([^.]*)/forum-(w+)-([0-9]+).html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
  5. rewrite ^([^.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
  6. rewrite ^([^.]*)/group-([0-9]+)-([0-9]+).html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
  7. rewrite ^([^.]*)/space-(username|uid)-(.+).html$ $1/home.php?mod=space&$2=$3 last;
复制代码

以前修改的discuz的门户url伪静态就是上面的显示形式,今天又研究了discuz的东西,最终实现了https://www.ys166.com/catname/aid.html,因为我的站点的文章都是一页,也就暂时没有考虑增加页码的实现(比如:https://www.ys166.com/catname/adi-page.html),这个以后用到的时候在研究吧,下面就说一下我的实现方式:1.通过分析,在频道列表模板(/template/default/portal/list.htm)中有如下代码进行数据的展示
  1. <!--{loop $list['list'] $value}-->
  2.             <!--{eval $highlight = article_title_style($value);}-->
  3.             <!--{eval $article_url = fetch_article_url($value);}-->
  4.             <dl class="bbda cl">
  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>
  6.                 <dd class="xs2 cl">
  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.                     $value[summary]
  9.                 </dd>
  10.                 <dd>
  11.                     <!--{if $value[catname] && $cat[subs]}-->{lang category}: <label><a href="{$portalcategory[$value['catid']]['caturl']}" class="xi2">$value[catname]</a></label>  <!--{/if}-->
  12.                     <span class="xg1"> $value[dateline]</span>
  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']}-->
  14.                     <span class="xg1">
  15.                         <span class="pipe">|</span>
  16.                         <label><a href="portal.php?mod=portalcp&ac=article&op=edit&aid=$value[aid]">{lang edit}</a></label>
  17.                         <span class="pipe">|</span>
  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>
  19.                     </span>
  20.                     <!--{/if}-->
  21.                 </dd>
  22.             </dl>
  23.         <!--{/loop}-->
复制代码

其中fetch_article_url()这个函数是用来输出文章url的,此函数在文件/source/function/function_portal.php中
游客,如果您要查看本帖隐藏内容请回复

红色是框架自带的代码,蓝色是增加的代码,蓝色部分的作用就是通过catid获取到频道的地址,之后再拼接上文章的id.2.修改完上面代码后,我发现频道列表页中的文章地址已经自动更换为https://www.ys166.com/catname/aid.html。点击访问出现404,出现404说明资源不存在或者url地址错误,接下来我们需要修改一下nginx中rewrite的规则如下,修改完重启nginx,在访问刚才的文章地址,一切正常,说明已经修改成功了。
  1. #rewrite ^([^.]*)/article-([0-9]+).html$ $1/portal.php?mod=view&aid=$2 last; //注释掉的是以前url重写规则
  2. rewrite ^([^.]*)/(w+)/([0-9]+).html$ $1/portal.php?mod=view&aid=$3 last;//新规则
复制代码

3.有些人可能是DIY的门户首页,这时在diy模块中的文章地址还是https://www.ys166.com/artcile-aid-page.html,说明刚才的修改对diy模板不起作用。discuz现在的功能做的真是强大,不得不让人佩服,修改diy模板的显示非常的方便,如下标红处是我的修改,修改之前是{url},我们只需要把你每一个diy模板这块的地方都修改成{caturl}{id}.html,更新后,在访问试试看,是不是已经完全解决了。
因为这次只修改了门户的文章url的规则,也没有做过多的测试,不知是否有遗漏,不过我大概点了页面上所有的显示文章的地方,没有出问题。说明这次修改还是有用的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|RSS|联系|友声网 ( 鲁ICP备15020090号 )

GMT+8, 2020-9-23 16:19 , Processed in 0.672877 second(s), 18 queries , MemCache On.

Powered by Discuz! X

©2006-2020 Comsenz Inc.

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