当前位置: 首页 > WordPress > 正文

WordPress 去掉页面 html 后缀,Nginx 伪静态配置

建站初期为优化 SEO,给所有页面添加了 .html 后缀。长期使用后发现带 html 后缀会和不少插件、网站功能产生兼容冲突,决定将页面链接改回不带 .html 的原生形式。为防止旧收录链接 404、保护 SEO 权重,通过 Nginx 伪静态实现旧页面链接 301 跳转,文章链接保持不变。

建站初期,为追求静态化效果、对搜索引擎更友好,我给 WordPress 所有独立页面都加上了 .html 后缀。

当时的想法很简单:静态 html 格式的 URL,对 SEO 会更友好。于是借助固定链接插件实现了页面 xxx.html 、文章 /archives/ID.html 的链接结构。

但长期运行之后,慢慢发现页面带 .html 会带来不少隐性问题:很多主题功能、第三方插件在处理页面链接时会出现兼容异常,部分 API、表单、分页、缓存功能也容易出现各类奇怪 bug ,修复花费时间精力也极大。权衡之后,决定近期把页面链接恢复回 WordPress 原生不带.html 的格式,文章链接维持原样不变。

直接停用插件的话,搜索引擎已经收录的大量 /page.html 旧页面链接会直接 404,外部外链、历史访客访问也会报错,会造成收录丢失、排名大幅波动。

目前对策就是配置 Nginx 伪静态,做 301 永久重定向:仅根目录一级页面的 xxx.html 跳转至 xxx, /archives/ 目录下的文章链接完全保留,不做任何跳转。

伪静态代码


rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location ~ ^/(?!archives/)([^/]+)\.html$ {
    return 301 https://$host/$1$is_args$args;
}
location / {
    try_files $uri $uri/ /index.php?$args;
}

核心重定向规则:

  • ^/(?!archives/):负向预查,排除/archives/开头的 URL,保护文章链接不被误跳转
  • ([^/]+):只匹配网站根目录的一级页面,适配没有父级子页面的场景
  • \.html$:匹配末尾带有.html的 URL
  • return 301:永久重定向,搜索引擎会将旧页面权重传递至新 URL

跳转示例:

  • /about.html → 301 重定向到 /about
  • /archives/123.html → 不触发跳转,正常访问文章

总结

建站初期为 SEO 给页面增加 .html,但随着网站功能增多,插件兼容问题慢慢凸显。这套 Nginx 规则可以做到平滑迁移页面 URL,旧收录链接 301 跳转,文章链接完全不受影响,最大限度降低 URL 变更带来的 SEO 损失。

THE END

相关推荐

WordPress 去掉页面 html 后缀,Nginx 伪静态配置:等您坐沙发呢!

发表评论