MENU

Typecho的SEO优化

August 27, 2025 • Read: 54 • 学习,随想

sitemap

Sitemap 相当于专门给爬虫爬取的菜单,里面包含了所有的文章 url 和发布时间,是引导爬虫抓取的最高效方式。

要让 typecho 生成正确的 sitemap,有两个基本前提:

  1. 站点地址正确配置:在Typecho后台的「设置 -> 基本」中,必须填入精准的网站域名,并注意区分 httphttps,以及域名末尾不要多加斜杠 /
  2. 开启地址重写:在「设置 -> 永久链接」中,务必勾选“启用地址重写功能”,这样才能生成对SEO友好的静态化URL。

由于主题自带 sitemap 功能,我直接打开就行了。如果没有 sitemap 需要下载个 sitemap 插件。

但是当我在打开域名/sitemap.xml 的时候,发现后台 loc 元素是空的,相当于无法从 sitemap 获取到任何的文章 url 信息。和主题作者交流,他几乎瞬间就知道问题在那里,很快就改了一版正确的给我了(这就是作者建了群的好处,GitHub 提 issue 可能都没这么快)。

在几个月前我就发现了 SEO 的功能,在百度站长平台得到了 Meta 验证代码,放在了顶部。到现在还是不给我提交 sitemap,百度这个平台实在是坑。在 bing 站长平台倒是可以直接提交 sitemap。

PHP 配置

然后是在百度测试抓取诊断,很多文章都失败,显示 socket 读写错误。它意味着百度蜘蛛已经连接到了我的服务器,但在下载网页内容的过程中连接被意外中断了。这通常指向服务器端的问题。

排查是 PHP 默认配置太过保守,无法应对百度蜘蛛的并发抓取,需要修改一下。

进入 PHP 容器,docker exec -it server-php /bin/sh
编辑 www.config 文件,vi /usr/local/etc/php/php.ini

; 将最大进程数提升到一个更稳健的值
pm.max_children = 30 
; 其他关联值也相应提高 
pm.start_servers = 8 
pm.min_spare_servers = 8 
pm.max_spare_servers = 15 
; 增加一个“保险丝”:如果单个请求处理超过60秒,就自动终止它 
; 默认为0代表不限制,设置60这可以防止某个卡死的进程一直占用资源 
request_terminate_timeout = 60

exit 退出后重启 php 容器,docker restart server-php

接着再去测试,之前抓取失败的全部都抓取成功。

不仅解决了百度抓取失败的问题,还有意外之喜:网站的整体响应速度得到了提升。

提高PHP进程数后网站速度有点提升