本文目录导读:

- 第一阶段:基础架构(技术 SEO)
- 第二阶段:核心解析(On-Page 优化)
- 第三阶段:速度与性能(Core Web Vitals)
- 第四阶段:内容与关键词策略(Content Strategy)
- 第五阶段:实战代码示例(核心部分)
- 第六阶段:检测与调试工具
- 总结:优先做哪几件事?
在 PHP 项目中做好 SEO(搜索引擎优化),不仅仅是安装一个插件,而是需要从架构、代码、性能、内容等多个层面进行系统性优化。
以下是一份从入门到进阶的 PHP 项目 SEO 实战指南:
第一阶段:基础架构(技术 SEO)
这是搜索引擎爬虫抓取你网站的基础,如果这层做不好,后面都白费。
-
URL 结构优化(伪静态)
- 不要用:
?id=123&cate=456 - 要用:
/product/123/或/category/shoes/ - 实现方式:
- 使用 Nginx 或 Apache 的
rewrite规则,将动态参数重写为目录结构。 - 如果使用 Laravel/Symfony,路由本身就是伪静态的,直接定义
Route::get('/product/{id}')即可。
- 使用 Nginx 或 Apache 的
- 不要用:
-
语义化 HTML 标签
- 使用
<h1>只放页面主标题,且确保每个页面只有一个<h1>。 - 使用
<nav>、<article>、<aside>、<footer>等标签区分区域(HTML5)。 - 图片必须包含
alt属性(描述内容,包含关键词),图片的src路径名最好用英文关键词,如/uploads/red-shoes.jpg。
- 使用
-
动态生成 meta 标签
- 创建一个基类或辅助函数,在每个 Controller 中设置
title、description、keywords(关键词现在权重很低,但描述很重要)。 - Title:格式为“主关键词 - 品牌名”,不超过 60 字符。
- Description:包含核心关键词,以吸引点击为目的,不超过 160 字符。
- 创建一个基类或辅助函数,在每个 Controller 中设置
第二阶段:核心解析(On-Page 优化)
确保爬虫能看明白你的内容。
-
规范化链接(Canonical)
- 如果你的网站有
www和无www两个版本都能访问,一定要用301重定向到一个版本。 - 在
<head>中加上<link rel="canonical" href="https://yoursite.com/current-page/" />,防止参数重复造成的内容重复。
- 如果你的网站有
-
结构化数据(Schema.org)
- 这是高级玩法,但效果很好,通过 JSON-LD(一段 PHP 输出的
<script>)告诉搜索引擎你的内容是什么。 - 比如商品页(Product Schema)、文章页(Article Schema)或面包屑(BreadcrumbList)。
- 示例:
<script type="application/ld+json"> { "@context": "https://schema.org/", "@type": "Product", "name": "红色运动鞋", "offers": { "price": "199", "priceCurrency": "CNY" } } </script>
- 这是高级玩法,但效果很好,通过 JSON-LD(一段 PHP 输出的
-
面包屑导航(Breadcrumb)
- 不仅用户喜欢,爬虫也会依据它判断层级,在页面中展示
首页 > 分类 > 当前页的链接结构。
- 不仅用户喜欢,爬虫也会依据它判断层级,在页面中展示
-
Robots 与 Sitemap
robots.txt:允许爬虫访问,并指向 Sitemap 地址。sitemap.xml:动态生成,写一个 PHP 脚本,从数据库读取最新文章和商品,生成 XML 文件,这能加快新内容的收录。
第三阶段:速度与性能(Core Web Vitals)
页面加载速度是谷歌和百度的核心排名因素。
-
开启 Opcode 缓存
- 使用 PHP-FPM 搭配 OPcache,避免每次请求都重新编译 PHP 代码。
-
数据库查询优化
- 避免在循环中执行 SQL(N+1 问题)。
- 使用 Laravel 的
with()预加载,或原生 PHP 的多表JOIN查询。 - 给频繁查询的字段建立索引。
-
页面缓存(全页缓存)
- 方案:使用 Redis 或 Memcached 缓存渲染完成的 HTML。
- 方案 B:使用 Nginx 的
fastcgi_cache直接缓存 PHP 输出的结果(性能极佳)。 - 方案 C:若使用 Laravel,可启用
Cache门面将视图缓存。
-
静态资源优化
- CDN:将图片、CSS、JS 放在 CDN 上。
- 压缩:开启 Gzip 压缩(通过 Nginx 配置)。
- 懒加载:图片使用
loading="lazy"属性,或者使用 JS 初始化(在图片多时很关键)。
第四阶段:内容与关键词策略(Content Strategy)
- 唯一性:尽量避免“采集”或重复内容,如果内容重复,Google 会判定低质量。
- 关键词分布、H2/H3标签、正文首段都要出现核心关键词。
- 内链建设:在文章正文中,自动或手动加上相关文章的链接(如:“更多关于‘PHP优化’的文章”),这能传递权重。
第五阶段:实战代码示例(核心部分)
示例:一个简单的伪静态路由与 Meta 生成器
<?php
// index.php (前端控制器 - Front Controller)
// 1. 获取请求路径 (简化写法,实际应过滤)
$url = $_SERVER['REQUEST_URI']; // /product/123
$base_path = '/'; // 你的项目根目录
// 简化路由逻辑
if (preg_match('#^/product/(\d+)/?$#', $url, $matches)) {
$product_id = $matches[1];
// 模拟从数据库获取数据
$data = [
'title' => '高品质白色T恤 - 极简品牌',
'description' => '购买高品质白色T恤,采用纯棉材质,透气舒适。',
'canonical' => 'https://example.com/product/' . $product_id . '/',
];
// 设置响应头与动态 SEO 标签
echo '<!DOCTYPE html>';
echo '<html>';
echo '<head>';
echo '<title>' . htmlspecialchars($data['title']) . '</title>';
echo '<meta name="description" content="' . htmlspecialchars($data['description']) . '">';
// Canonical 防重复
echo '<link rel="canonical" href="' . $data['canonical'] . '">';
// 面包屑
echo '<nav class="breadcrumb"><a href="/">首页</a> > <a href="/products/">产品</a> > <span>白色T恤</span></nav>';
echo '</head>';
echo '<body>';
echo '<h1>高品质白色T恤</h1>';
// 图片 alt 优化
echo '<img src="/uploads/white-tshirt.jpg" alt="高品质白色T恤 纯棉圆领" loading="lazy">';
// 输出 JSON-LD 结构化数据
$schema = [
'@context' => 'https://schema.org',
'@type' => 'Product',
'name' => '高品质白色T恤',
'description' => $data['description'],
'offers' => ['price' => '59.00', 'priceCurrency' => 'CNY']
];
echo '<script type="application/ld+json">' . json_encode($schema, JSON_UNESCAPED_SLASHES) . '</script>';
echo '</body>';
echo '</html>';
} else {
// 404 处理
http_response_code(404);
echo '页面不存在';
}
第六阶段:检测与调试工具
部署上线后,建议定期使用这些工具检查:
- Google Search Console:提交 Sitemap,检查索引状态。
- 百度搜索资源平台:国内网站的必看选项。
- Lighthouse(Chrome 浏览器自带):检查性能与 SEO 得分。
- Screaming Frog:爬取整个网站,查找死链、重复 Title、缺失 Meta 的问题。
优先做哪几件事?
如果时间有限,按这个顺序来做:
- 开启 Gzip + 页面缓存(提速是第一位的)。
- 修复 Title 和 Description(点击率的关键)。
- URL 伪静态(如果你还在用
?id=)。 - 生成有效的
sitemap.xml(让搜索引擎更快找到你)。