Discuz论坛SEO指南——静态化URL

2016-10-28 19:46 阅读 12 次 评论关闭

Discuz后台自带了一个静态化URL的功能,而且默认也写好了静态化的规则。但是这里Discuz旧版的有一个问题,就是Discuz帖子页面的静态化规则没有写好。

如默认的Discuz帖子页面规则是:

thread-{tid}-{page}-{prevpage}.html

即规则为:

thread-{帖子ID}-{帖子翻页ID}-{当前帖子所在的列表页ID}.html

问题就出在“当前帖子所在的列表页ID”这里,因为在论坛板块中,当一个帖子是最新发表或最新回复的时候,“当前帖子所在的列表页”是第一页,url中的数字是 “1”。当这个帖子很久没人回复沉下去的时候,“当前帖子所在的列表页”就不知道是几了,可能出现在第二页,也可能在第十页。这样,每个帖子的url经常在变化。会产生很多的重复页面,而且url经常变化,当前帖子积累的权重会丢失。

为了解决这个问题,可以重写url静态化规则。当然修改页面代码也能解决这个问题,但是不方便维护,因为修改后的文件以后可能会被升级文件覆盖,而且会丢失部分功能。

Discuz论坛用的是linux+apache,而且论坛是作为一个虚拟主机放在服务器上。 Url静态化的过程就这么操作:

新建一个文本文件,文件名为“.htaccess”,然后用UltraEdit编辑这个文件,写入的规则为:

# 将 RewriteEngine 模式打开
RewriteEngine On

# 修改以下语句中的RewriteBase 后的地址为你的论坛目录地址,如果程序放在根目录中,为 /,如果是相对论坛根目录是其他目录则写为 /{目录名},如:在bbs 目录下,则写为 /bbs
RewriteBase /

# Rewrite 系统规则请勿修改
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^topic-(.+).html$ portal.php?mod=topic&topic=$1&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^article-([0-9]+)-([0-9]+).html$ portal.php?mod=view&aid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^forum-(w+)-([0-9]+).html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^thread-([0-9]+)-([0-9]+).html$ forum.php?mod=viewthread&tid=$1&extra=page%3D$3&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^group-([0-9]+)-([0-9]+).html$ forum.php?mod=group&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^space-(username|uid)-(.+).html$ home.php?mod=space&$1=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^([a-z]+)-(.+).html$ $1.php?rewrite=$2&%1

用 UltraEdit 写好规则后,按F12,在文件另存为的窗口上,有个“格式”选项,选“utf-8 -无BOM “保存。然后把“.htaccess”上传到论坛根目录。

然后在进入后台 --> 全局-->优化设置-->搜索引擎优化 。 其他保持不变,就把“主题内容页”规则改为:

thread-{tid}-{page}.html

保存设置再更新一下缓存就可以了。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:Discuz论坛SEO指南——静态化URL | 猎微网

评论已关闭!