SEO 百科

伪静态与 rewrite

本页目录

伪静态与 rewrite

伪静态 是一种做法,动态生成的页面用静态样式的网址对外呈现,例如把 ?id=123 这类地址写成 /article/123.html。rewrite 是它的实现手段:服务器在收到请求后按规则改写成真正的内部地址,浏览器与爬虫看到的仍是改写前那个。

它不改变引擎的判断

网址写成静态样式不会让页面变成静态文件。Google 处理页面时先抓取再渲染,动态生成的内容同样能被读到。它说渲染是为了取回脚本内容,也就是 JavaScript 生成的那部分,缺了这一步可能看不到相应内容[1]。伪静态省不掉渲染这一步,也不构成额外加分。

真正的收益在三处

第一处是网址的可读性。路径里的词对读者理解去向有用,Google 也把网址里的字词列为相关性因素之一,同时提醒不要指望靠域名里的字词换取优势[2]。

第二处是结构与规范。同一篇内容如果同时能通过 /a.html 与 ?id=1 访问,就产生了重复网址,要靠规范网址收敛到一个[3]。

第三处是迁移成本。规则写在服务器层,改版时批量调整比改代码轻,但仍要按迁移那条路处理:旧地址要重定向到新地址[3]。

rewrite 的常见用途

按用途分四类:把动态地址映射成短地址;补协议与主机名(http 到 https、裸域到带 www);处理大小写与末尾斜杠;把已删除或改名的旧地址重定向到新地址[4]。

nginx 一侧由 rewrite 模块完成这件事,Apache 一侧可由 .htaccess 与 mod_rewrite 承担[5]。

容易踩的三条

规则顺序。先匹配的规则把后面的挡住了,排查时要把重写链按顺序打出来看。

重定向状态码用错。永久搬家要用 301,临时要用 302 与 307,混用会让规范收敛变慢[3]。

无限循环。改写后的地址又落回同一条规则,结果是 500 或请求被反复处理,爬虫侧表现为抓取错误。

常见误用

第一种是以为伪静态能提速。速度取决于后端与缓存,路径形式不改变生成过程。第二种是给同一内容保留两个入口而不设规范网址[3]。第三种是改规则时不做迁移清单,旧外链指向的地址失效。

附录

参见

参考资料

官方(境外)

  1. 《关于 Google 搜索运作方式的深度指南》,Google 搜索中心。
  2. 《了解 Google 搜索的排名系统与您的网站》,Google 搜索中心。
  3. 《规范网址与重复内容的处理》,Google 搜索中心。
  4. 《Htaccess Redirects》,Backlinko。
  5. 《nginx rewrite module》,NGINX。

外部链接