【网站 seo 排名优化】typecho Handsome 主题高排名权重优化方案

news2024/11/24 22:48:30

前言

前一篇优化文章主要是完成了对于 typecho 各个方面的美化与简单优化,如下:
构造你独一无二的博客美化:typecho joe主题优化日志
而现在博主采用的是 Handsome 主题,相比较 joe 主题,编辑、定制功能更为强大、方便,但却存在一个致命的问题,seo 效果比不上 joe 主题,也是因为切换了主题,搜索引擎收录的文章也有部分掉出。故,对于 Handsome 主题有必要对其进行针对性的 seo 优化。主要实现了以下针对性优化:

  1. 解决蜘蛛索引时,存在“该页面上存在多个 h1 标记” 问题
  2. 文章中的外链未做优化处理造成权重流失,需要添加 rel=“no­fol­low” 属性
  3. 全局左侧边栏最新评论项目累积垃圾链接,去除该项目,并美化剩下项目位置
  4. 文章末尾添加以 tag 为推荐条件的相关文章推荐,共 5 条
  5. 删除网站标题连接符两边的空格,增加网页标题有效信息内容
  6. 增加自定义description和keywords标签菜单
  7. 降低分页、标签页对于首页、文章页的权重分散

解决蜘蛛索引时,存在“该页面上存在多个 h1 标记” 问题

问题:通过查看源代码方式,发现每篇文章都有两个h1标签。查找主题文件之后,发现为阅读模式生效后使用的 h1,如果修改阅读模式的 h1,可能会导致标题目录次序出现问题。但在阅读模式下,不显示目录,也就视觉上默认没有问题。可以修改,介意者可不修改。

位置:/handsome/libs/content.php

前面的h1是文章页的标题,后面的就是阅读模式的h1了,将它修改成h2即可。大约在675行的位置。

文章标题 h1:

<header id="small_widgets" class="bg-light lter wrapper-md">
<h1 class="entry-title m-n font-thin text-black l-h">' . $archive->title;

阅读模式 h1:修改为 h2

<div id="morphing-content" class="hidden read_mode_article">
    <div class="page">
        <h2 class="title">$obj->title</h2>
        <!--修改下一行 h1 为 h2 ,此处已修改-->
        <div class="metadata singleline">
    		<a href="#" rel="author" class="byline">{$author}</a>&nbsp;&nbsp;
			<span class="delimiter"></span><time class="date">{$time}</time>
    	</div>     
        {$core_content}
    </div>
</div>

文章中的外链未做优化处理造成权重流失,需要添加 rel=“no­fol­low” 属性

nofollow主要有三个作用:

  1. 防止不可信的内容,最常见的是博客上的垃圾留言与评论中为了获取外链的垃圾链接,为了防止页面指向一些拉圾页面和站点。
  2. 付费链接:为了防止付费链接影响Google的搜索结果排名,Google建议使用nofollow属性。
  3. 引导爬虫抓取有效的页面:避免爬虫抓取一些无意义的页面,影响爬虫抓取的效率。

使用别人的程序不留版权是不道德的行为,所以有必要在底部留下对于的版权信息,但是版权、备案、站外链接都应该加nofollow标签,当然这是站外的链接,站内也有部分链接需要加入nofollow标签,比如网站底部的广告合作、联系方式等页面。

Handsome 主题外链处理分为以下三种:

  • 文章外链
  • 全站友情链接
  • 内页友情链接

自行选择优化方案:

文章外链

通过开发者工具可发现,文章外链所属的类为 class=“no-external-link” 根据此类,查询主题文件可得:在 /handsome/libs/content/ScodeContent.php 中存在如下代码:

//文章中的链接,以新窗口方式打开
$content = preg_replace_callback("/<a href=\"([^\"]*)\">(.*?)<\/a>/", function ($matches) {
    if (strpos($matches[1], substr(@BLOG_URL, 0, -1)) !== false || strpos(substr($matches[1], 0, 6), "http") === false) {
        return '<a href="' . $matches[1] . '">' . $matches[2] . '</a>';
    } else {
        if (Utils::getExpertValue("no_link_ico", false)) {//true 则不加图标
            return '<a href="' . $matches[1] . '" target="_blank">' . $matches[2] . '</a>';
        } else {
            <!--在下一行添加 rel="nofollow" 此处已修改-->
            return '<span class="external-link"><a class="no-external-link" rel="nofollow"  href="' . $matches[1] . '" target="_blank"><i data-feather="external-link"></i>' .
                $matches[2] .
                "</a></span>";
        }

    }
}, $content);

按代码注释增加对应代码即可。

全站友情链接

代码位置:/handsome/component/aside.php

具体:

<ul class="nav nav-sub dk">
      <li class="nav-sub-header">
      <!--使用links插件,输出全站友链 下一行 rel='noopener nofollow' 即可 -->
     <?php $mypattern1 = "<li data-original-title=\"{title}\" data-toggle=\"tooltip\" 
    data-placement=\"top\"><a rel='noopener nofollow' href=\"{url}\" target=\"_blank\"><span>{name}</span></a></li>";
     $options = mget();
     if ($options->pluginReady){
         Handsome_Plugin::output($mypattern1, 0, "ten");
     } ?>
</ul>

内页友情链接

代码位置:/handsome/libs/Content.php

具体:

$mypattern = <<<eof
<div class="col-sm-6">
<!--下一行 rel='nofollow' 即可 -->
<a href="{url}" target="_blank" class="list-group-item no-borders box-shadow-wrap-lg" rel="nofollow"> <span 
class="pull-left thumb-sm avatar m-r" > <img 
  src={image} alt="Error" class="img-square" /> <i class="{color} right"></i> </span> <span class="clear"><span class="text-ellipsis">
  {name}</span> <small 
  class="text-muted clear text-ellipsis">{title}</small> </span> </a>
</div>

全局左侧边栏最新评论项目累积垃圾链接

文章评论时允许留下链接,而这些链接我们无法保障其优秀性,而最新评论栏目又会直接展现在首页上,可能导致网站权重的降低,故,尝试去除最新评论栏目,效果如下:

image-20230608013958335

代码位置:/handsome/component/sidebar.php

采用注释符:<!--注释符--> 注释以下代码即可:

<!--14-->
<!--<?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; ?>-->

去除最新评论之后,还需要修改剩余两个栏目的位置,因为底部导航条没有对齐:

删除“最新评论”“栏目后的侧边栏

我们需要修改 handsome.min.css,其位置在:/handsome/assets/css

为追求传输速率,css 为压缩后,较为难以肉眼查找,我们可以使用 .nav-tabs-alt .nav-tabs>li[data-index=“0”].active~.navs-slider-bar 作为关键词搜索相关代码;将其对应的:transform: translateX(xx%); 修改其 xx 为对应数值即可。

注意以 data-index=“0” 区分两个按钮:

  • data-index="0"对应的transform: translateX(55%);修改成transform: translateX(100%);
  • data-index="2"对应的transform: translateX(460%);修改成transform: translateX(405%);

由于是 css 文件,简单点击刷新没有意义,会读取缓存,必须 F5,无缓存刷新网页,才能看到修改后的结果,如下:

针布戳.jpg

文章末尾添加以 tag 为推荐条件的相关文章推荐

这里仅仅是希望在文章页中进行相关文章的展示,另外个人博客单页面承载的链接不建议过多。下面写的是最多5个。

具体代码的位置可以自行决定,放在文章末尾的地方就好了。博主采用的位置为文章内容下一篇、上一篇的位置下方,如下:

image-20230608012118471

代码位置为:/handsome/post.php

具体位置:

<!--120 行:上一篇&下一篇-->
<nav class="m-t-lg m-b-lg">
    <ul class="pager">
    	<?php thePrev($this); ?>   <?php theNext($this); ?>
    </ul>
</nav>

相关推荐代码:

<!--相关推荐-->
<div class="tab-content clear">
    <h3 class="widget-title m-t-none text-md"><?php _me("相关文章") ?>
        <small><i class="fontello-bell" data-toggle="tooltip" title="我们将根据本文的tag进行相关文章的推荐"></i>
        </small>
    </h3>
    <div id="relatedPosts" >
        <ul class="list-group-item nav nav-list">
            <?php $this->related(5)->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>  

删除网站标题连接符两边的空格,增加网页标题有效信息内容

空格-空格换成-,如果标题字数多的博客可以将其两边的空格去掉获得 1-2 字的展现。

$options = mget();
if ($currentPage > 1) {
	<!--删除‘-’前后空格 -->
    _me("第%s页-", $currentPage);
}

if ($commentPage > 1) {
    //todo 这种描述容易有歧义
    <!--删除‘-’前后空格 -->
    _me("第%s页-", $commentPage);
}
$obj->archiveTitle(array(
    'category' => _mt('分类 %s 下的文章'),
    'search' => _mt('包含关键字 %s 的文章'),
    'tag' => _mt('标签 %s 下的文章'),
    'author' => _mt('%s 发布的文章')
), '', ' - ');
echo $title;

修复首页description和keywords显示BUG

页面的标头部分缺少说明。

描述添加到页面源代码的 部分中: <meta name='description' content='在此处输入有关页面内容的描述性、富含关键字的文本。'>。

搜索引擎可能会使用搜索引擎结果页面(SERP)中的 标记中所提供的描述。编写良好的描述将与页面的内容相契合,并且与搜索者的意图相关,从而帮助你提高网站流量,因为在进行搜索时,这种描述有助于提高页面的点击率。

摘要过长或过短

将页面源代码的 标记中的描述长度更改为介于 25 到 160 个字符之间

搜索引擎爬网程序仅在搜索结果页面中显示该说明的前 150-160 个字符,因此如果说明过长,搜索者可能无法看到所有文本;如果说明过短,搜索引擎可能会添加在页面其他位置找到的文本内容。请注意,如果搜索引擎认为其他说明与用户搜索内容的相关性更高,则可能会显示其他说明,而非你编写的说明。

原版Typecho的description和keywords标签无法自定义,对SEO不够友好。其实很简单,在原来的菜单最前面加上description和keywords两个菜单项,大概原理是如果为空就使用默认的description和keywords标签,不为空就使用文章撰写时设置的标签,这里顺带加了个首页、标签和分类判断。官方文档如下:神奇的is语法 - Typecho Docs

typecho 框架具体方法

  • 打开var/Widget/Archive.php,在与上文同样的位置将增加的代码改为如下即可:
if(($this->is('index') == False)AND($this->is('tag') == False)AND($this->is('category') == False)){
    if((!is_null($this->fields->description))AND(strcmp($this->fields->description,'') != 0)){
        $allows['description'] = $this->fields->description;
    }
    if((!is_null($this->fields->keywords))AND(strcmp($this->fields->keywords,'') != 0)){
        $allows['keywords'] = $this->fields->keywords;
    }
}
解释
  • 增加了一个判断语句判断当前页面是否首页/标签/分类,非首页、标签和分类才执行。
  • 再增加了一个判断语句判断description和keywords是否为空字符串,如果是空字符串也使用原方法。

修改Handsome源码的方法

  • 经过简单测试没有问题,实际使用请自测。
  • 已经修复一开始提到的首页BUG。
  • 没加标签和分类判断,参考上面的代码看着加就是了,用AND连接。
  • 参考header.php使用官方文档:自定义头部信息输出 - Typecho Docs

具体方法

  • 打开usr/themes/handsome/component/header.php,找到第54行,也就是<?php $this->header(Content::exportGeneratorRules($this)); ?>这一行,将这一行替换成如下内容:
<?php
        if($this->is('index')){
            $this->header(Content::exportGeneratorRules($this));
        }else{
            $custom_headerb = '';
            if(!is_null($this->fields->description)){
                $custom_headerb .= 'description=';
                $custom_headerb .= $this->fields->description;
            }
            if(!is_null($this->fields->keywords)){
                if(strcmp($custom_headerb,'') == 0){
                    $custom_headerb .= 'keywords=';
                    $custom_headerb .= $this->fields->keywords;
                }else{
                    $custom_headerb .= '&keywords=';
                    $custom_headerb .= $this->fields->keywords;
                }
            }
            if(strcmp($custom_headerb,'') == 0){
                $this->header(Content::exportGeneratorRules($this));
            }else{
                $this->header($custom_headerb);
            }
        }
    ?>

解释

  • 先判断是不是首页,如果是首页就用原方法。
  • 如果不是首页,就分别判断descriptionkeywords是否填写,将他们拼起来。
  • 如果descriptionkeywords都没填写依旧用原方法。
  • 最后送到header()函数中去。

降低分页、标签页对于首页、文章页的权重分散

经过一段时间的使用,发现搜索引擎并不收录文章页面,而经常性收录以下页面:

  • 各种文章标签的页面
  • 各种关键词搜索页面
  • 各种文章分类的页面

为了让搜索引擎更多的收录文章,而不是其他页面,故在蜘蛛屏蔽文件 robots.txt 中增加以下信息:

Disallow: /category
Disallow: /tag
Disallow: /search

插件补充推荐

Pretty_for_handsome:一款针对Typecho主题Handsome专用美化插件,一个插件,替代修改主题代码的复杂操作。具有以下功能:

  • iframe视频文章嵌入优化
  • iframe视频短代码插入
  • 响应耗时和访客总数(全站字数放弃,减少服务器压力)
  • 右侧边栏时光流逝模块
  • 顶部导航显示心知天气
  • 左侧目录彩色图标
  • 右侧彩色标签和彩色标签云
  • 鼠标经过头像旋转放大
  • 鼠标点击特效
  • 文章标题居中
  • LOGO扫光
  • 复制成功提示
  • H1/H2标题背景颜色设置
  • 打赏按钮跳动效果
  • 移动端隐藏标签云和博客信息
  • 首页文章鼠标经过上浮
  • 网站运行时间
  • 文章end标识
  • 文章二维码
  • 文章尾部提交百度按钮
  • 全站黑白
  • 文章底部版权提示
  • 评论边框和阴影
  • 评论头像呼吸效果
  • 文章页头图悬浮
  • 优化首页轮播图样式
  • 动态背景
  • 优化首页图片版式文章题目样式
  • 移动端隐藏动态背景开关
  • 夜间模式隐藏动态背景开关
  • 静态壁纸设置
  • 增加文章前广告位
  • 增加评论列标前广告位

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/622245.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试真题 JavaScript 实现【合法IP】【牛客练习题】

一、题目描述 IPV4地址可以用一个32位无符号整数来表示&#xff0c;一般用点分方式来显示&#xff0c;点将IP地址分成4个部分&#xff0c;每个部分为8位&#xff0c;表示成一个无符号整数&#xff08;因此正号不需要出现&#xff09;&#xff0c;如10.137.17.1&#xff0c;是我…

Python中函数的介绍

在Python中&#xff0c;函数的三个要素是&#xff1a;函数名参数返回值 函数名&#xff1a;函数名是函数的标识符&#xff0c;用于唯一标识函数。在定义函数时&#xff0c;需要给函数一个名字&#xff0c;以便后续调用和引用。函数名应遵循命名规则&#xff0c;例如以字母或下划…

HDSLB VPP 23.04 is formally released

1 摘要 近年来随着数字化技术的发展&#xff0c;数据中心以及边缘设备的网络带宽需求越来越高。作为部署在服务入口位置的4层负载均衡器&#xff0c;其性能要求也随之水涨船高。为了应对当前的市场需求&#xff0c;充分利用Intel的软硬件技术和优势&#xff0c;针对4层负载均衡…

一个奇葩的问题

大家好&#xff0c;这里是极客重生&#xff0c;最近遇到一个奇葩的网络问题&#xff0c;分享给大家&#xff0c;看完一定会觉得很奇葩。 问题现象 客户反馈有一个server端S&#xff0c; 两个client端C1, C2, S的iptables规则对C1, C2都是放通的&#xff0c;但是C2无法连接上S&a…

有奖征文 | 夙兴夜寐,铸梦网安

出品&#xff5c;MS08067实验室&#xff08;www.ms08067.com&#xff09; 本文作者&#xff1a;潜龙勿用 01 时光荏苒&#xff0c;流年岁月如白驹过隙&#xff0c;不停飞逝于眼前&#xff0c;在这车马星驰的人间&#xff0c;踏入网络安全领域已然三年有余。我也终于从一开始的不…

左移右移 2022年国赛 思维

思路&#xff1a; 简单的思维题&#xff0c;应该从后往前遍历操作。如果后面的对数i操作过&#xff0c;则前面对数i的操作都可以无视。可以通过栈这种数据结构实现后往前遍历。 AC代码&#xff1a; import java.io.*; import java.util.*; public class Main{public static …

Linux常用命令——groupdel命令

在线Linux命令查询工具 groupdel 用于删除指定的工作组 补充说明 groupdel命令用于删除指定的工作组&#xff0c;本命令要修改的系统文件包括/ect/group和/ect/gshadow。若该群组中仍包括某些用户&#xff0c;则必须先删除这些用户后&#xff0c;方能删除群组。 语法 gro…

LC3-仿真器的安装

LC3-仿真器安装 参考&#xff1a;Download and Install LC-3 | CS 131 - Computer Organization (comp-org-etext.netlify.app) 如觉得本文写的不够详细&#xff0c;可参考如上网址。 介绍 小型计算机LC-3 汇编环境是一种模拟指令架构&#xff08;ISA&#xff09;&#xff0c;…

wpf 3d复习1

之前研究过一段wpf 3d显示机械臂的代码&#xff1b;复习一下看一下&#xff1b; 它的摄像机位置是&#xff0c;0.491531,0.298732,0.321531&#xff1b; 我想把看到物体变小&#xff1b;就是摄像机移远&#xff1b;把摄像机坐标都乘以3&#xff0c;变为 &#xff0c; …

chatgpt赋能python:Python平均值函数简介

Python平均值函数简介 Python是一种广泛使用的编程语言&#xff0c;因为它易于学习&#xff0c;语法简单&#xff0c;可以完成广泛的任务和应用程序开发。 在Python编程中&#xff0c;平均值函数是最基本、最常用的函数之一。平均值可以用来表示一组数据集的中心趋势指标。让…

微软为 VS Code 带来 C# 开发套件

微软于今天在 Marketplace 上架了一款适用于 Visual Studio Code 的官方 C# 开发套件 —— C# Dev Kit&#xff0c;通过更好地管理、测试&#xff0c;以及提供全新的 AI 功能&#xff0c;为 Linux、macOS 和 Windows 平台的开发者带来了更好的 C# 开发体验。 根据微软官方提供的…

关于语言模型私有化部署的讨论 | AIGC实践

上周在与TC同行关于AIGC实践的线上交流中&#xff0c;大家普遍比较关心的一个实践切入点是&#xff1a;语言模型的私有化部署——简单来说&#xff0c;就是在企业内部&#xff0c;部署一个属于自己的“ChatGPT”&#xff0c;对于本行业/专业知识&#xff0c;以及企业独有的产品…

【学习日记2023.6.7】之 MyBatisPlus入门

文章目录 MybatisPlus1. 入门案例1.1 SpringBoot整合MyBatisPlus入门程序 2. MyBatisPlus概述2.1 MyBatis介绍2.2 MyBatisPlus特性 3. MyBatisPlus的CRUD操作4. MyBatisPlus分页功能5. 开启MyBatisPlus日志5.1 解决日志打印过多问题5.1.1 取消初始化spring日志打印5.1.2 取消Sp…

基于SpringBoot+Vue的学生考勤管理系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

【Web服务器】基于Nginx搭建LNMP架构

文章目录 一、安装 MySQL 数据库1. 安装Mysql环境依赖包2. 创建运行用户3. 编译安装4. 修改mysql 配置文件5. 更改mysql安装目录和配置文件的属主属组6. 设置路径环境变量7. 初始化数据库8. 添加mysqld系统服务9. 修改mysql 的登录密码10. 授权远程登录 二、编译安装 nginx 服务…

2024」预备研究生mem-论据和结论为简单句(下)

一、论据和结论为简单句-建立联系 二、结论包含完成推理 改版&#xff1a; 三、课后题

盘点一个Python网络爬虫问题

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 在天愿作比翼鸟&#xff0c;在地愿为连理枝。 大家好&#xff0c;我是皮皮。 一、前言 前几天在Python最强王者群【刘桓鸣】问了一个Python网络爬虫的问…

8自由度并联腿机器狗实现行走功能

1. 功能说明 本文示例将实现R309a样机8自由度并联腿机器狗行走的功能。 2. 并联仿生机器人结构设计 机器狗是一种典型的并联仿生四足机器人&#xff0c;其腿部结构主要模仿了四足哺乳动物的腿部结构&#xff0c;主要由腿部的节段和旋转关节组成。在设计机器狗的腿部结构时&…

实用教学Prompt 提示词实战:如何用 ChatGPT 指导高考语文作文写作

又是一年高考季&#xff0c;牵动着广大学生和家长的心。7 日上午&#xff0c;语文科目考试结束。 今年高考语文共7套试卷&#xff1a;全国甲卷、全国乙卷、新课标Ⅰ卷、新课标Ⅱ卷、北京卷、天津卷、上海卷。 以高考语文作文题目来实践检验一下&#xff0c;如何用合适的提问词&…