浅谈前后端分离系统的SEO优化

开发一个系统,不管是从头开始,还是在已有系统上二次开发,从来都不是一蹴而就的事情。在上线以前总觉得已经做够了足够的测试,但是在上线之后还是会出现各种各样的问题。

有的问题,如果是新系统完全可以避免,正是由于是在已有系统上开发的为了兼容wp才会引入一系列的问题,这类问题主要是wp原生的一些机制兼容问题导致的包括但不限于:

1.wp固定连接的兼容

2.shortcode的解析处理

3.wp资源文件与新系统资源文件的路径兼容处理

4.wp启用插件的功能实现,邮件通知、micro-post、邮件发送、邮件模板等等

5.其他的未知问题

也有一部分是新系统天生的缺陷:seo不友好,搜索引擎爬虫无法获取网页内容,毕竟robot不会执行js,这个是前后端分离系统的必然缺陷。

<!doctype html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <link
      rel="icon"
      href="https://zhongxiaojie.cn/wp-content/uploads/2026/01/uugai.com-166111691272754-100x100.png"
      sizes="32x32"
    />
    <link
      rel="icon"
      href="https://zhongxiaojie.cn/wp-content/uploads/2026/01/uugai.com-166111691272754-200x200.png"
      sizes="192x192"
    />
    <link
      rel="apple-touch-icon"
      href="https://zhongxiaojie.cn/wp-content/uploads/2026/01/uugai.com-166111691272754-200x200.png"
    />
    <meta
      name="msapplication-TileImage"
      content="https://zhongxiaojie.cn/wp-content/uploads/2026/01/uugai.com-166111691272754-300x300.png"
    />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta
      name="description"
      content="爱好广泛的女王 独立APP开发者 AI修理师 爬虫砖家 逆向工程师 人工智能 全栈工程师"
    />
    <meta
      name="keywords"
      content="人工智能,机器学习,ml,逆向分析,信息安全,物联网,ida,uniapp,python,爬虫,妹子图,秀人集,java,vue"
    />
    <meta
      name="theme-color"
      content="#ff4f87"
    />
    <link
      rel="manifest"
      href="/manifest.json"
    />
    <link
      rel="stylesheet"
      href="/vendor/enlighterjs.min.css"
    />
    <link
      rel="stylesheet"
      href="/vendor/simple-microblogging.css"
    />
    <title>obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 / 智商不稳定的女神经</title>
    <script type="module" crossorigin src="/assets/index-DFHpxK1A.js"></script>
    <link rel="stylesheet" crossorigin href="/assets/index-CKljzL1r.css">
  </head>
  <body>
    <div id="app"></div>
    <script
      defer
      src="/vendor/enlighterjs.min.js"
    ></script>
    <script defer src="/vendor/obaby.js"></script>

  </body>
</html>

 

当然有人会比较在意这个东西,不是说这个东西不对。可能是自己没那么在乎吧,之前就曾经收到过数次关于seo友链不显示的问题,上次是搞页面静态化。

其实,在我的博客添加的友链,也并不是全部都不显示,毕竟还有其他的域名,zhongxiaojie.com 以及 oba.by等还是会显示完整的友链信息,这两个域名并没有切换到新的前后端分离的系统。所以,我博客的友链,相当于数个站都给友链做了多次链接,我不知道这个东西对于seo有没有作用,至于是有好处,还是有坏处,我并不清除,我自己并不是那么关注所谓的seo。如果觉得这样反而会出问题的,欢迎反馈,我会及时删除相关链接哈。

当然,这个东西有办法解决吗?答案自然是有,至于解决方法,那就是继续回归服务器渲染。

这解决方案真的是简单粗暴啊,合着这折腾来折腾去,又要弄回服务器渲染,这辛辛苦苦四十年,一夜回到解放前?

采用这种简单粗暴的方法来解决seo问题,显示不是本仙女的作风。既然是针对搜索引擎的,那就直接对搜索引擎做单独的处理就完了。检测ua,如果是收缩引起的ua返回服务器渲染之后的内容,如果是正常浏览(搜索引擎爬虫意外的ua)返回前后端分离的内容。

要实现服务器渲染,基于vue的可以参考nuxt.js(百度百科):

Nuxt.js是由NuxtLabs团队于2016年10月推出的基于Vue.js的开源Web框架,采用MIT License授权。该框架灵感来源于Next.js,Nuxt采用了约定俗成的规范以及一种明确的目录结构,以实现对重复性任务的自动化处理,并使开发人员能够专注于推进新功能的开发。 [2] [5] [8]
Nuxt默认内置服务器端渲染(SSR)功能、支持静态站点生成(SSG)和单页面应用(SPA)三种部署模式,可通过”nuxt generate”命令生成预渲染HTML文件实现静态化部署 [5] [7]。采用模块化架构提供50多个扩展模块,支持TypeScript类型安全、推送和现代化开发工具链 [4] [6]

接下来也就简单了,创建nuxt项目,实现与frontend同样的页面路由和相关的页面文件布局。接口可以直接复用当前的接口,

配置openresty的处理逻辑:

# -----------------------------------------------------------------------------
# Dynamic Rendering(SEO):爬虫 UA → Nuxt SSR;普通用户 → 现有 SPA
# - Nuxt SSR 服务建议监听 127.0.0.1:3000(可按需调整)
# - ?__ssr=1 可强制走 SSR(方便自测/排障)
# - 仅对“页面路由”生效,不影响 /assets、/vendor、/bp-api、WP 后台等
# -----------------------------------------------------------------------------
set $bp_force_ssr 0;
if ($arg___ssr = "1") {
    set $bp_force_ssr 1;
}

set $bp_is_bot 0;
if ($http_user_agent ~* "(googlebot|bingbot|baiduspider|yandexbot|duckduckbot|slurp|sogou|360spider|bytespider|petalbot|facebookexternalhit|twitterbot|rogerbot|ahrefsbot|semrushbot|mj12bot)") {
    set $bp_is_bot 1;
}

location @nuxt_ssr {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Uri $request_uri;
}

# 418 跳转技巧:在页面路由里 return 418 → error_page 转到 @nuxt_ssr
error_page 418 = @nuxt_ssr;

启动之后就可以查看服务器渲染的页面了:

当然,这个实现方法的缺点就是得完全复刻frontend的相关路由和页面,优点就是不用关注原来的系统实现逻辑,哪怕爬虫seo系统出问题也不会影响现有的系统运行。

 



闺蜜圈APP

You may also like

48 comments

  1. Level 1
    Google Chrome 147.0.0.0 Google Chrome 147.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition cn中国–北京–北京 新国信通信有限公司 IPv4

    前端都用框架了,直接一步到位SSG托管得了。

    1.  公主 Queen Queen 
      Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–崂山区–中国联通–3GNET网络 IPv6

      不大喜欢这种静态页面生成逻辑,改了东西还得再跑一遍生成。嘎嘎。

      1. Level 1
        Google Chrome 147.0.0.0 Google Chrome 147.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition cn中国–江苏省–南京市–溧水区–中国联通–3GNET网络 IPv6

        还好吧,action自动构建又不用自己打包!另外你的#app内空空如也 是不是被NUXT的Fallback机制给回退了 smile 我记得以前写的时候也出现过这种情况,

        1.  公主 Queen Queen 
          Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–崂山区–中国联通–3GNET网络 IPv6

          #app 哪个地方?没注意呢

  2. Level 4
    Firefox 140.0 Firefox 140.0 GNU/Linux x64 GNU/Linux x64 cn中国–广东省–珠海市–香洲区–中国电信–CTNET网络 IPv6

    还是要借用 nuxt.js 来做服务器渲染么,我也想过,但是要换框架,改代码唉~

    1.  公主 Queen Queen 
      Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–崂山区–中国联通–3GNET网络 IPv6

      我这个是独立运行的,只给搜索引擎用,不影响现有的系统。

  3. Level 4
    Google Chrome 147.0.0.0 Google Chrome 147.0.0.0 Windows 11 x64 Edition Windows 11 x64 Edition cn中国–江苏 移动 IPv4

    开发这种事,感觉总会有新的需求和问题出来,然后就是再一遍的修改

    1.  公主 Queen Queen 
      Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–崂山区–中国联通–3GNET网络 IPv6

      是啊,一旦开始了之后,需求就越来越多

  4.  Level 3
    Google Chrome 147.0.0.0 Google Chrome 147.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition cn中国–广东–深圳 电信 IPv4

    不考虑彻底分离,pjax 也是一种轻量解决方案,可以在不换框架的情况下兼顾前端性能与SEO 。
    这个头图很有诱惑力啊

    1.  公主 Queen Queen 
      Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–崂山区–中国联通–3GNET网络 IPv6

      pjax 这个没用过,找时间了解下。
      图片喜欢就行啦。

  5.  Level 2
    Google Chrome 147.0.0.0 Google Chrome 147.0.0.0 Windows 11 x64 Edition Windows 11 x64 Edition cn中国–辽宁–沈阳–沈河区 电信 IPv4

    还有骨架屏,真不错啊,这个应该是前后端分离最好的优化首屏加载的方式了

      1.  公主 Queen Queen 
        Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–崂山区–中国联通–3GNET网络 IPv6

        我就是纯粹因为菜,找了个能看懂的办法来解决问题。

    1.  公主 Queen Queen 
      Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–崂山区–中国联通–3GNET网络 IPv6

      嗯嗯,我也觉得暂时也就这样了,这个地方没想到什么别的优化方法了。

  6. Level 1
    Firefox 150.0 Firefox 150.0 Windows 10 x64 Edition Windows 10 x64 Edition cn中国–甘肃省–兰州市–城关区–中国移动–公众宽带 IPv6

    几个月前好像是React还是哪个,因为服务器渲染出了很大的Bug,影响非常广泛。

    1.  公主 Queen Queen 
      Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–崂山区–中国联通–3GNET网络 IPv6

      react也有独立的服务器渲染组件。所以怎么说呢,十年河东十年河西,以前都是前后端分离,现在又开始搞服务器渲染了。
      我这也算逆势而为了。

  7.  Level 2
    Microsoft Edge 147.0.0.0 Microsoft Edge 147.0.0.0 Android 10 Android 10 cn中国–江西省–九江市–德安县–中国联通–3GNET网络 IPv6

    既然都前后端分离了 感觉就彻底脱离WordPress算了,数据迁移也不是什么很复杂的事情。

    1.  公主 Queen Queen 
      Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–崂山区–中国联通–3GNET网络 IPv6

      没太大动力,管理后台开发比前端开发复杂多了。
      管理后台

  8.  Level 4
    Google Chrome 148.0.0.0 Google Chrome 148.0.0.0 Windows 11 x64 Edition Windows 11 x64 Edition cn中国–中国广播电视网络有限公司 IPv6

    好用就行,关键是文档和快速。我觉得非商业推广类的网站,比如我们这些个人博客,其实SEO并没有太多意义。我也不关注SEO。

    1.  公主 Queen Queen 
      Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–崂山区–中国联通–3GNET网络 IPv6

      是的,seo这个东西,现在感觉即使关注也难有什么作为。

  9.  Level 4
    Google Chrome 147.0.0.0 Google Chrome 147.0.0.0 GNU/Linux x64 GNU/Linux x64 cn中国–辽宁–朝阳–北票市 电信 IPv4

    纯html结构的SEO基本上没啥问题,尽可能的生成原生的HTML 就好了。

  10.  Level 4
    Google Chrome 147.0.0.0 Google Chrome 147.0.0.0 GNU/Linux x64 GNU/Linux x64 cn中国–辽宁–朝阳–北票市 电信 IPv4

    要不是因为wordpress有个不错的后台,估计大部分人早换程序了。

    1.  公主 Queen Queen 
      Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–崂山区–中国联通–3GNET网络 IPv6

      是的,wp的后台还是不错的。主要也是用习惯了。

  11.  Level 3
    Google Chrome 131.0.6778.200 Google Chrome 131.0.6778.200 Android 16 Android 16 cn中国–湖南省–永州市–道县–中国联通–3GNET网络 IPv6

    钟小姐的博客越来越好了, 能不能优化一下表情按钮, 单次点击不会弹窗的,要按到不放才会弹出窗口。不知道是不是专门这样设计的 hunter

    1.  公主 Queen Queen 
      Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–崂山区–中国联通–3GNET网络 IPv6

      尝试强制刷新试试

      1.  Level 3
        Google Chrome 133.0.0.0 Google Chrome 133.0.0.0 Android 10 Android 10 cn中国–湖南省–永州市–道县–中国联通–3GNET网络 IPv6

        smile smile smile smile smile smile :-)测试无效果,不知道电脑端怎么样我用的是手机哦。 girl_pinkglassesf必须要长按才会弹出窗口。

        1.  公主 Queen Queen 
          Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition cn中国–山东省–青岛市–李沧区–中国联通–公众宽带 IPv6

          我手机也试了,正常的啊

      1. Level 3
        Microsoft Edge 147.0.0.0 Microsoft Edge 147.0.0.0 Android 10 Android 10 cn中国–安徽省–中国电信–公众宽带 IPv6

        话说,我评论过之后,是看不到我这个评论的,就是不像YP或者WP那样,自己能看到,然后上面显示个待审核么,不然我不知道是不是提交成功了

        1.  公主 Queen Queen 
          Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–崂山区–中国联通–3GNET网络 IPv6

          下面有个提示,有的可能会需要审核哈。(会走评论检测)
          审核提示

          1.  公主 Queen Queen 
            Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–崂山区–中国联通–3GNET网络 IPv6

            提示的确是不太明显,嘎嘎

  12. Level 3
    IBrowse r IBrowse r Android 10 Android 10 cn中国–湖南–娄底 电信 IPv4

    虽然知道怎么回事,但这方法我还是认认真真懞懞懂懂地没看懂 blum,知识面太广了。

    1.  公主 Queen Queen 
      Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition cn中国–山东省–青岛市–李沧区–中国联通–公众宽带 IPv6

      方法曲折了点,不过还是解决问题了

  13. Level 1
    Microsoft Edge 147.0.0.0 Microsoft Edge 147.0.0.0 Windows 11 x64 Edition Windows 11 x64 Edition cn中国–重庆–重庆 联通 IPv4

    我最近就有个 SEO 的问题,有点儿困扰,但又不是很好意思公开说,害

    1.  公主 Queen Queen 
      Google Chrome 146.0.0.0 Google Chrome 146.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition cn中国–山东省–青岛市–李沧区–中国联通–公众宽带 IPv6

      seo我也一知半解,也不是很关注这个。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注