网站 SEO
对自己的网站 maksutovdesign.ru 进行技术SEO:四种语言共268个页面,不使用任何CMS。我制定了哪些规则,让搜索引擎以同样的方式理解每个页面;截至2026年10月3日的数字结果;以及这与“装个插件”有何不同。
01 / 任务
没有CMS,意味着SEO必须靠脚本搭建、用数字验证
在WordPress中,canonical和站点地图由插件完成。这里每个页面都是单独的HTML文件,同样的元信息需要手工维护在268个地方。目标是把SEO从零散的修补变成可重复的流程:统一规则、生成器、检查,并把结果记录为数字。
02 / 技术包
每个页面都有 Canonical、hreflang、Open Graph 和 JSON-LD
2026年9月6日,我按照《工艺圣经》一书(附录A和B——上线准备与Schema.org标记)的建议,对网站应用了统一的技术包。该块插入 <head> 中 seo-pack 标记之间,由一个幂等脚本生成:可重复运行,不会重复数据,并根据当前的 title、description 和面包屑重新生成。
Hreflang 只为真实存在的语言生成:如果页面没有译文,就不会出现指向不存在地址的链接。这样可避免“hreflang 链接指向404”的错误。
- 每个页面都有 canonical,域名不带 www
- hreflang ru/en/zh/ar + x-default,不含指向缺失译文的链接
- 带独立图片的 Open Graph 与 Twitter Card
- theme-color、favicon 套件和 site.webmanifest
- 一个脚本一次性重建所有页面的该块
03 / 结构化数据
每个页面的同一图谱中包含十二种 Schema.org 类型
统一的 Organization + Person 图谱把所有页面关联到同一位网站所有者,在此基础上每个页面再按其真实性质获得自己的类型。类型按栏目自动选择。
| Schema.org 类型 | 页面数 | 应用位置 |
|---|---|---|
| Organization + Person | 268 + 268 | 整个网站——唯一的所有者与作者 |
| BreadcrumbList | 256 | 带面包屑的页面,依据真实导航生成 |
| WebPage | 72 | 普通页面 |
| Service | 64 | 服务页面及其子栏目 |
| CreativeWork | 53 | 案例、项目和代码仓库 |
| CollectionPage | 35 | 列表:案例、项目、博客、笔记 |
| Article | 28 | 博客文章 |
| Book | 8 | 四种语言版本的《工艺圣经》与《色彩百科》 |
| WebSite + SearchAction | 4 | 首页,内置搜索的描述 |
| ContactPage, SearchResultsPage | 4 + 4 | 联系页面与搜索结果 |
我有意做了两个决定。其一:网站没有自评的 AggregateRating 标记——所有者给自己打的评分会被搜索引擎视为违规。其二:我不依赖 FAQ 富摘要——Google 已于2026年5月取消,因此 FAQ 栏目就是一个带问答的普通页面。
04 / 标题与元数据
一个 h1、独特的 description、零重复
9月6日我对文本做了编辑审核:删掉案例中的广告套话,重写命名与品牌手册的导语,统一卡片、名称与元数据。对搜索来说,这与标记同样重要:摘要由 description 和 title 生成,重复的描述会让页面彼此混淆。
图片的宽高在加载前预留位置,页面不会“跳动”,这改善了 CLS 指标。其余11%是动态图库,尺寸由脚本设置。
- Title 和 description 为页面而写,而非套用模板
- h2–h3 标题不跳级
- 所有图片的 alt 描述内容,而非文件名
- 草稿页和服务页以 noindex 关闭
05 / 收录
Robots、含261个地址的站点地图和品牌化404页
站点地图不只是地址列表:每个 URL 都附有其他语言版本的链接,搜索引擎在一个文件里就能拿到镜像站地图。robots.txt 指明站点地图路径,只关闭 /admin/ 文件夹:除 CRM 外,整个网站对收录开放。
当网站出现尚无内容的新栏目——例如未来服务的页面——它们会立即获得 noindex,且不进入站点地图。页面填充完成的当天,我就解除限制。
- robots.txt:Allow / 与 Disallow /admin/
- 带 hreflang 替代版本的 sitemap.xml
- 带 noindex 和栏目链接的 404.html
- 草稿——noindex, follow,不进站点地图
- site.webmanifest 与三种格式的 favicon
06 / 主机与重定向
唯一的地址版本,以及来自旧站的301重定向
网站只通过 https://maksutovdesign.ru 打开:带 www 的版本和不安全的 http 都以301重定向到主地址。搜索引擎不会把权重分散到同一地址的四种变体上。
上一版网站的8条重定向规则得以保留:/ai-art、/trip、/logofolio 和 /case/monin 等旧地址指向新页面,因此外部链接和书签不会变成404。服务器还会发送安全头和为期一年的 HSTS。
- www → 无 www,http → https,均为301
- 8条旧地址规则
- 关闭目录列表:Options -Indexes
- HSTS 1年,以及 nosniff、SAMEORIGIN 头
07 / 速度与体积
不使用框架的静态站:首页 HTML 仅 87 KB
这里的速度是架构的结果,而不是事后优化:没有 JS 框架,没有构建,没有笨重的 CMS。主要体积来自图片,所以它们以一年的缓存期提供,替换文件时会换新名称,用户立刻就能看到新版本。统计用的是我自己的轻量计数器,不使用第三方 cookie,也不会因别人的脚本拖慢页面。
08 / 内部链接
10,586 条内部链接,没有一条失效
我把网站所有内部链接都过了一遍目标文件是否存在的检查。检查发现4条失效链接:《色彩百科》每种语言版本中的“下载 PDF”按钮指向一个并不存在的文件名。链接已修复,复查显示零错误。
面包屑位于页面顶部和底部,同时生成 BreadcrumbList 标记。内置搜索按语言建有四套索引——每套 437 到 446 条,并带有长页面内部章节的锚点:笔记、项目档案和图书章节都能用任意词找到。
- 检查全部内部链接:0 条失效
- 顶部和底部的面包屑
- 长页面内部章节的锚点
- 覆盖四种语言的全文搜索
- 相关栏目之间的快速跳转卡片
09 / 如何维护
三个脚本,以及每次发布前的检查
SEO 层不会过时,因为它不靠手工修改。每次内容变更后,都会运行同一套动作。
| 步骤 | 作用 | 何时运行 |
|---|---|---|
| seopack.py | 在所有页面重建 canonical、hreflang、OG 和 JSON-LD | 修改 title、description 或面包屑之后 |
| build_search_index.py | 根据页面全文更新四套搜索索引 | 修改文本或新增页面之后 |
| 标签检查 | 查找每个页面中未闭合和多余的标签 | 构建发布压缩包之前 |
| 链接与移动端布局检查 | 查找失效链接、横向滚动和控制台错误 | 重大结构变更之后 |
洽谈项目
10 / 相关页面