5cc07ecd95bcb.jpg

handsome是一款既好看又功能强大的Typecho主题,而我们在使用过程中多多少少还是会发现许多关于优化方面的问题,这些问题说大不大,说小问题也不小,下面喵斯基部落就主要的几个问题谈一谈关于这款基于Typecho博客程序下的handsome主题相关的seo优化,欢迎大家补充,在下就抛砖引玉了!

考虑到Handsome for typecho主题即将更新新版本,目前尚不确定本教程涉及代码是否兼容,再次声明此教程仅基于Handsome_for_typecho_v6.0版本,请自行斟酌食用。

问题一:Typecho之handsome主题head头部优化

<meta name="generator" content="Typecho 1.1/17.10.30" />
<meta name="template" content="handsome" />
<link rel="pingback" href="http://网址/action/xmlrpc" />
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://网址/action/xmlrpc?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://网址/action/xmlrpc?wlw" />
<link rel="alternate" type="application/rss+xml" title="喵斯基部落个人博客 &raquo; RSS 2.0" href="http://网址/feed/" />
<link rel="alternate" type="application/rdf+xml" title="喵斯基部落个人博客 &raquo; RSS 1.0" href="http://网址/feed/rss/" />
<link rel="alternate" type="application/atom+xml" title="喵斯基部落个人博客 &raquo; ATOM 1.0" href="http://网址/feed/atom/" />

这些代码对于SEO而言并不友好,也许是博主是强迫症患者总想着头部还是精简写好,因此使用以下方法进行精简!

解决方案

打开themes/handsome/component/header.php大约在40行将

<?php $this->header(Content::exportGeneratorRules($this)); ?>

修改为

<?php $this->header('wlw=&xmlrpc=&rss2=&atom=&rss1=&template=&pingback=&generator'); ?>

修改好后在看网站头部清爽了许多这样搜索引擎在抓取时就可以快速的抓取网站主题body

问题二:网站标题连接符两边的空格修改

默认主题的连接符为 网站标题 - 副标题连接符两边都有空格我们都知道搜索引擎是限制展现标题字数的这两个空格无疑增加了占位符,因此如果标题字数多的博客可以将其两边的空格去掉获得1-2字的展现!

解决方案

打开themes/handsome/libs/目录下的Content.php将所有“ - ”替换成“-”不带引号哈这里只是让大家看清楚空格!

问题三:文章作者发布文章列表与首页文章列表相同

这样做的话虽然对浏览者来说是个不错的good idea但是对于搜索引擎来说却不太友好,想象一下不同网址、不同标题但内容一样对一直喜爱新鲜内容讨厌重复抄袭伪原创的搜索引擎会带来什么,因此我们可以选择折中的方法,可以禁止搜索引擎抓取收录文章作者发布文章列表!

解决方案

在网站根目录添加 robots.txt 文件,这个文件时搜索引擎抓取网站时第一时间爬取的文件用来指引、规定搜索引擎哪些页面可以抓取哪些不可以,我们在robots.txt文件中添加以下内容用来禁止所有搜索引擎抓取文章作者发布文章列表!

User-agent: *
Disallow: /author

nginx 301重定向到首页

rewrite ^/author/(.*)/ https://www.moewah.com/ permanent;

另外可以考虑将首页文章列表和文章内页中的作者进行A标签移除:

1、在handsome/libs/Content.php文件中查找代码<a href="{$parameterArray['authorUrl']}">将此a标签彻底移除,仅保留 {$parameterArray['author']}即可。

2、在handsome/post.php文件中查找代码<a class="meta-value" href="<?php $this->author->permalink(); ?>" rel="author">将此a标签彻底移除,仅保留<?php $this->author(); ?>即可。

问题四:解决首页、目录、分页等页面分页的问题

细心的人会发现一个问题,那就是分页列表的第一页与首页内容相同、网站标题相同,这样在SEO上来说是造成分散权重最大的原因,搜索引擎会收录两个首页,一个是 首页 另一个则是 网址/1/ 的分页面!

解决方案

1.在robots.txt中将所有/1/的链接禁止搜索引擎抓取收录
内容为

User-agent: *
Disallow: */1

2.可以设置301重定向将分页1的链接重定向到首页或目录首页

# Apache 
RewriteEngine On 
RewriteBase / 
RewriteRule ^page/1/$ https://www.moewah.com/ [L,R=301]  //重定向首页分页第一页到首页
RewriteRule ^(.*)/1/$ https://www.moewah.com/$1 [L,R=301] //重定向所有目录分页第一页重定向到目录页

# Nginx 
rewrite ^/page/1/$ https://www.moewah.com/ permanent;
rewrite ^/(.*)/1/$ https://www.moewah.com/$1 permanent;

3.可在所有分页的title上添加

<link rel="canonical" href="首页网址或分页目录网址">

从而使分页权重集中

问题五:文章外链未做优化处理造成权重流失

撰写一篇文章所引用的外部链接在我们完成发布后,我们会发现默认情况下它并没有被添加nofollow标签,并且链接打开方式是_self(当前页面打开)这就造成了权重流失。

解决方案

针对文章外链,会有nofollow属性和新窗口打开,但是针对本站内链仅有新窗口打开。这样既可以防止外链稀释本站权重,又可以通过内链优化页面排名。

打开typecho根目录下的 var/HyperDown.php 文件,找到第386行,如以下代码:

  // link
$text = preg_replace_callback("/\[((?:[^\]]|\\\\\]|\\\\\[)+?)\]\(((?:[^\)]|\\\\\)|\\\\\()+?)\)/",
function ($matches) use ($self) {
$escaped = $self->parseInline(
$self->escapeBracket($matches[1]),  '',  false, false);
$url = $self->escapeBracket($matches[2]);
$url = $self->cleanUrl($url);
return $self->makeHolder("<a href=\"{$url}\">{$escaped}</a>");
},
$text
);

将代码中的:

return $self->makeHolder("<a href=\"{$url}\">{$escaped}</a>");

替换为:

if (strstr($url,'//www.moewah.com') == false ) {
return $self->makeHolder("<a href=\"{$url}\" target=\"_blank\" rel=\"nofollow\">{$escaped}</a>");
} else {
return $self->makeHolder("<a href=\"{$url}\" target=\"_blank\">{$escaped}</a>");
}

问题六:文章无对应的标签链接

标签对seo优化的作用不容小觑,tag标签对应的链接都是列表页面,和文章分类目录列表页面类似,很容易被百度收录。seoer可以用标签(含链接)来做长尾词,又能增加网站内链。

解决方案

在当前文章内容尾部添加该文章的标签,在主题目录下的post.php文件中的适当地方加入以下代码。

<!--生成当前文章标签-->
标签:<?php $this->tags(',', true, 'no tag'); ?>

如果想要给每个标签套上div方便添加css样式,进行美化。参考我下面的步骤:

1、在 usr/themes/handsome/post.php文件合适的位置添加下面的代码:

<div class="tags-end">
    <strong>标签:</strong>
    <div class="tags-t" style="display: inline-block;"><?php $this->tags('</div><div class="tags-t" style="display: inline-block;">', true, '无标签'); ?></div>
</div>  

2、将以下代码添加至后台主题设置 自定义CSS。

#post-content .tags-end .tags-t>a {
    margin-right: .5rem;
    margin-top: .5rem;
    padding: .5rem 1rem;
    border-radius: 1rem;
    background: #f5f5f5;
    color: #777;
    text-decoration: none;
    font-weight: 400;
    display: inline-block;
    font-size: 12px;
}

问题七:全局侧边栏最新评论累积垃圾链接

细心的朋友会发现,最新评论的URL结构为 https://www.moewah.com/archives/xxx.html/comment-page-1#comment-xxx 再观察一下#的位置,毫无疑问搜索引擎会抓取在# 之前的URL也就是https://www.moewah.com/archives/xxx.html/comment-page-1 而且这类的垃圾链接没有任何意义,没必要做权重传递,更没必要被蜘蛛爬行。

解决方案

使用<!--注释符-->注释 themes/handsome/component路径下sidebar.php文件的下面这行代码:

            <!--<?php if (COMMENT_SYSTEM == 0): ?>
         <li role="presentation"> <a href="#widget-tabs-4-comments" role="tab" aria-controls="widget-tabs-4-comments" aria-expanded="false" data-toggle="tab"> <i class="glyphicon glyphicon-comment text-md text-muted wrapper-sm" aria-hidden="true"></i> <span class="sr-only"><?php _me("最新评论") ?></span> </a></li>
            <?php endif; ?>-->

问题八:模拟抓取首页存在垃圾信息

当我们通过http://s.tool.chinaz.com/tools/robot.aspx?url=www.moewah.com模拟抓取首页内容的时候,会发现 HandSome 主题的标签云存在大量的垃圾内容:例如该标签下有 xx 篇文章

解决方案

查找themes/handsome/component/sidebar.php文件中的<?php echo sprintf(_mt("该标签下有 %d 篇文章"), $tags->count); ?> 修改为 <?php $tags->name(); ?>

问题九:页面相关性比较薄弱

通过数据了解到单个文章页面的排名具备优势,但同时跳出率也很明显。跳出率可以通过增强内链建设和相关推荐来优化。

将以下代码段添加至handsome/post.php文件翻页的区域,这里仅仅是希望在文章页中进行相关文章的展示,另外个人博客单页面承载的链接不建议过多,也欢迎大家一起讨论。

    <!--相关推荐-->
    <div class="tab-content clear">
    <h3 class="widget-title m-t-none text-md"><?php _me("相关文章") ?>
                    <small><i class="glyphicon glyphicon-info-sign" data-toggle="tooltip" title="我们将根据本文的tag进行相关文章的推荐"></i>
                    </small>
    </h3>
    <div id="relatedPosts" >
                <ul class="list-group-item nav nav-list">
                    <?php $this->related(6)->to($relatedPosts); ?>
                    <?php if ($relatedPosts->have()): ?>
                        <?php while ($relatedPosts->next()): ?>
                        <li class="tocify-item text-second">
                            <a href="<?php $relatedPosts->permalink(); ?>" title="<?php $relatedPosts->title(); ?>"><?php $relatedPosts->title(); ?></a> 
                        </li>
                        <?php endwhile; ?>
                    <?php else : ?>
                    <li>暂无相关推荐</li>
                    <?php endif; ?>
                </ul>
        </div>
    </div>

喵斯基部落在做个人博客的这一段时间暂时就发现这些问题存在,我会继续记录遇到的问题与handsome开发者进行沟通更加完善handsome的优化!


相关推荐

文章作者:喵斯基部落
原文地址:https://www.moewah.com/archives/3005.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。