大家好,我是贝贝。
最近好几个做PHP开发的朋友来问我,说他们项目改成前后端分离了,数据都是前端通过API来拿,结果网站收录好像变差了,排名也往下掉,问我有没有办法。
这确实是个挺实际的问题,所以我想结合我自己遇到的情况和试过的方法,来具体聊聊。
传统的PHP项目,比如用ThinkPHP、Laravel直接渲染页面,服务器返回给浏览器的是完整的HTML,搜索引擎爬虫来抓取的时候,拿到的是直接能看懂的内容。
前后端分离之后,情况变了。
你的PHP服务器可能只提供API接口,返回一堆JSON数据,真正的页面是由浏览器里的JavaScript,用Vue或React这些框架动态渲染出来的。
问题就出在这里:很多搜索引擎爬虫在处理这种JavaScript渲染的页面时,能力是有限的,或者根本不去执行JS。
它可能只抓取到你最初返回的那个几乎空白的HTML壳子,里面根本没有实质性的文章内容、产品列表这些关键信息。
这就导致了“内容不能被索引”这个最根本的SEO问题。
知道了问题,那怎么解决呢?
我把我用过和了解过的几种方案列一下,各有各的适用场景。
为了更清楚,我简单对比一下这几个方案的关键点:
| 方案 | 实现难度 | 维护成本 | 对动态内容的支持 | 适合的场景 |
|---|---|---|---|---|
| 服务端渲染(SSR) | 较高 | 较高 | 好 | 内容频繁更新、交互复杂的中大型应用 |
| 预渲染(Prerender) | 低 | 低 | 差 | 内容相对固定、页面数不多的宣传站、博客 |
| 动态渲染 | 中等 | 中等 | 好 | 需要区别对待爬虫与用户、有SEO需求的动态应用 |
就算解决了页面内容渲染的问题,PHP后端API的设计也得配合好SEO。
有几个细节很容易被忽略。
第一是URL结构。
即使前端用了Vue Router,定义了`/article/:id`这样的路由,你也要确保这个URL模式能映射到真实的、有内容的页面。
并且,要在PHP后端或者SSR服务中,为这些重要的路由设置正确的`sitemap.xml`,主动提交给搜索引擎。
第二是元标签的管理。
每个页面的title、description、keywords这些,不能再写死在前端代码里了。
比较合理的做法是,PHP的API在返回文章内容数据时,一起把这篇内容的meta信息返回。
然后在前端或者SSR服务中,动态地注入到页面的`
`里面去。比如你的文章API返回的数据结构可以这样设计:
{
"post" {
"id"123,
"title" "文章标题" "content" " },
"seoMeta" {
"eTitle" "标题 - 网站名" "description" "摘要描述" ""关键词1,关键词2" }
}
第三是链接的可用性。
说到底,PHP做前后端分离后的SEO,核心思路就是“把给爬虫看的内容准备好”。
要么提前准备好(预渲染),要么实时准备好(SSR),关键是要保证爬虫拿到手的,是和用户看到的一样的、完整的内容。
技术选型上没有绝对的好坏,就看哪个更适合你当前项目的规模和更新频率。
本文由小艾于2026-04-27发表在爱普号,如有疑问,请联系我们。
本文链接:https://www.ipbcms.com/516.html