Discuz X3.2默认是禁止搜索引擎访问 misc.php 文件的,因此 tag 不会被收录。
我们可以将 tag 网址伪静态化,这样不仅使 tag 网址看上去更规范美观,还使 tag 页面可以被百度收录。
第一步,复制根目录下的 misc.php 文件为 misc_tag.php 文件,删除其中的(否则搜索引擎无法访问)。
第二步,增加伪静态规则(以Nginx为例)。
rewrite ^([^\.]*)/tag.html$ $1/misc_tag.php?mod=tag last;
rewrite ^([^\.]*)/tag-([1-9][0-9]*)-1\.html$ $1/misc_tag.php?mod=tag&id=$2 last;
rewrite ^([^\.]*)/tag-([1-9][0-9]*)-([2-9]|[1-9][0-9]+)\.html$ $1/misc_tag.php?mod=tag&id=$2&type=thread&page=$3 last;
注意:必须添加在- rewrite ^([^\.]*)/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ $1/plugin.php?id=$2:$3 last;
复制代码 此行之前的任意位置。添加后需要 重载 或 关闭后再启动 Nginx后生效(仅直接重启无效)。
该规则使 tag标签页面 支持以网址 tag-标签编号-标签页数.html 访问指定标签页面。
第三步,修改Discuz程序,使 tag链接 由原有的动态链接换为伪静态链接。
1、打开 template/default/tag/tagitem.htm 模板文件
将- <a class="xi2" href="misc.php?mod=tag&id=$id&type=thread">{lang more}...</a>
复制代码 修改为:
- <a class="xi2" href="tag-$id-2.html">{lang more}...</a>
复制代码
将- <a class="xi2" href="misc.php?mod=tag&id=$id&type=blog">{lang more}...</a>
复制代码 修改为: - <a href="misc.php?mod=tag&id=$id&type=blog" class="xi2" style="font-weight: bold;">{lang more}...</a>
复制代码
将- <a href="misc.php?mod=tag">{lang tag}</a>
复制代码 修改为:
- <a href="tag.html">{lang tag}</a>
复制代码
将- <a href="misc.php?mod=tag&id=$id">$tagname</a>
复制代码 修改为:
- <a href="tag-$id-1.html">$tagname</a>
复制代码
将- <!--{loop $threadlist $thread}-->
复制代码 修改为
- {eval $tiaoshu = 0}<!--{loop $threadlist $thread}-->{eval $tiaoshu ++;}
复制代码
将第一个- <!--{if empty($showtype)}-->
复制代码
修改为
- <!--{if empty($showtype) && $tiaoshu >= 20}-->
复制代码
将- action="misc.php?mod=tag"
复制代码 修改为
2、修改翻页按钮。
打开 source/module/misc/misc_tag.php 文件,
将- $multipage = multi($count, $tpp, $page, "misc.php?mod=tag&id=$tag[tagid]&type=thread");
复制代码 修改为
- $multipage = multi_guide($count, $tpp, $page, "tag-$tag[tagid]");
复制代码
打开 source/function/function_core 文件,在- function simplepage($num, $perpage, $curpage, $mpurl) {
复制代码 前面增加一段(定义multi_guide):
function multi_guide($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = FALSE, $simple = FALSE, $jsfunc = FALSE) { return $num > $perpage ? helper_page_guide::multi($num, $perpage, $curpage, $mpurl, $maxpages, $page, $autogoto, $simple, $jsfunc) : ''; }
进入 source/class/helper/ 目录,将 helper_page.php 复制一份命名为 helper_page_guide.php 。
并依次修改 helper_page_guide.php 文件中的以下部分:
将 helper_page 修改为 helper_page_guide (共两处,其中文件头注释中的那处无关紧要);
将修改为
将- $jsurl = $mpurl.(strpos($mpurl, '{page}') !== false ? '\'.replace(\'{page}\', this.value == 1 ? \'\' : this.value)': $pagevar.'\'+this.value;').'; doane(event);';
复制代码 修改为- $jsurl = substr($mpurl, 0, -1).(strpos($mpurl, '{page}') !== false ? '\'.replace(\'{page}\', this.value == 1 ? \'\' : this.value)': $pagevar.'\'+this.value').'+\'.html\'; doane(event);';
复制代码 (此项操作使手动输入页码翻页时链接静态化)
将- return $mpurl.$separator.$pagevar.$page;
复制代码 修改为- return substr($mpurl, 0, -1).$separator.$pagevar.$page.'.html';
复制代码 (翻页页码链接静态化)
3、修改title。
打开 source/module/misc/misc_tag.php 文件,
将- $navtitle = $tagname ? $taglang.' - '.$tagname : $taglang;
复制代码 修改为:
- $navtitle = $tagname ? $tagname.$title_page.' - '.$taglang : $taglang;
复制代码
并在其前面加入一行:
- if($_GET['page']) { $title_page = '(第'.$_GET['page'].'页)'; }
复制代码
4、使tag首页列出的tag链接和搜索按钮伪静态化。
打开 template/default/tag/tag.htm 模板文件,
将- <a href="misc.php?mod=tag&id=$tag[tagid]" title="$tag[tagname]" target="_blank" class="xi2">$tag[tagname]</a>
复制代码 修改为:
- <a href="tag-$tag[tagid]-1.html" target="_blank" class="xi2">$tag[tagname]</a>
复制代码
将- action="misc.php?mod=tag"
复制代码 修改为
5、修改帖子页面上的tag链接,使其静态化。
打开 template/default/forum/viewthread_node_body.htm 模板文件(部分模板可能在 viewthread_node.htm 文件中,自行查找),
将- misc.php?mod=tag&id=$var[0]
复制代码 (部分模板可能不只一处,搜索查找确认),修改为
- tag-{echo intval($var[0])}-1.html
复制代码
6、修改标签不存在时返回标签首页的链接。
打开 source/language/tag/lang_template.php 文件,
将- <a href="misc.php?mod=tag" title="返回标签首页">返回标签首页</a>
复制代码 修改为
- <a href="tag.html" style="font-weight: bold;">返回标签首页</a>
复制代码
第四步(可选),附加优化。
1、打开 template/default/tag/tagitem.htm 模板文件,
删除- <h1 class="mt"><img class="vm" src="{IMGDIR}/tag.gif" alt="tag" /> {lang tag}: $tagname</h1>
复制代码 可以去掉列表上方的“标签:XXX”字样(重复,影响美观)。
将- <th><h2>{lang related_thread}</h2></th>
复制代码 修改为- <th><h2>包含关键字 $tagname 的{lang related_thread}</h2></th>
复制代码 可以将“相关帖子”替换为“包含关键字 XXX 的相关帖子”。
将- <h2>{lang related_blog}</h2>
复制代码 修改为- <h2>包含关键字 $tagname 的{lang related_blog}</h2>
复制代码 可以将“相关日志”替换为“包含关键字 XXX 的相关日志”。
将- <p class="emp">{lang no_content}</p>
复制代码 (共两处)替换为- <p class="emp" style="padding-left:30px;">{lang no_content}</p>
复制代码 可将“没有相关内容”字样右移30px,使之与存在的内容标题对齐。
将- <p class="emp">{lang empty_tags}</p>
复制代码 替换为
2、SEO,优化TAG页面上的内容列表。自行修改 template/default/tag/tagitem.htm 模板文件,给作者链接加上 nofollow ,去除查看数、最后回帖作者、最后回帖时间上的链接。
3、让不存在的TAG页面返回404状态码。修改 source/module/misc/misc_tag.php 文件,
在- include_once template('tag/tagitem');
复制代码 前加入以下代码:
- if($_GET['id'] && (!$tagname || !$threadlist) && $type != 'blog') {header("HTTP/1.1 404 Not Found");header("Status: 404 Not Found");}
复制代码
|