WordPress伪静态怎么设置才正确?从固定链接原理到宝塔Nginx规则的完整讲解

你有没有遇到过这种尴尬:网站装好了,文章也发了,点进去,地址栏的 URL 长这样——https://你的域名.com/?p=123。

丑是丑了点,但能用,对吧?我也这么想的,直到我发现搜索引擎几乎不收录这种链接,才急急忙忙去研究”伪静态”这三个字。

那次折腾,我啃了一堆文档,改错了几次配置还把网站弄白屏过,最后才真正搞明白 WordPress 伪静态到底是怎么回事。今天这篇,我想把这套东西彻底讲透——不是抄官方文档,而是把我踩过的坑、理解错的地方,全部摊开给你看。


先搞懂一个概念:什么是”伪静态”,它和”真静态”差在哪

“伪静态”这个词,第一次听真挺唬人的。先拆开看。

真静态,就是网站上真的存在一个个 .html 文件。你访问 /about.html,服务器就把这个文件原样发给浏览器。很多老式网站、或者用 Hexo、Hugo 这类静态博客生成器搭的站,就是这种。

伪静态,是”看起来像静态文件,其实没有这个文件”。WordPress 就是这样。你访问 /wordpress-weijingtai-shezhi/,服务器上根本没有这个目录,是 WordPress 程序在后台”演”出来的。它根据 URL 反推出你要看哪篇文章,再动态生成页面返回给你。

那问题来了:既然 ?p=123 也能看文章,为什么费劲搞伪静态?

答案就一个词——为了人和搜索引擎都舒服。

?p=123 这种链接,人看不出含义,蜘蛛也看不出。换成 /wordpress-weijingtai-shezhi/,URL 里带了拼音,搜索引擎能读懂这页面大概是讲什么的,对收录和排名都有帮助。这一点我在写TDK那篇文章里也反复强调过——URL 本身就是 SEO 的一环。

伪静态不是万能的,但它对于一个做 SEO 的 WordPress 站来说,基本是必选项。


第一步:在 WordPress 后台设置固定链接

伪静态的第一步,不在服务器上,在 WordPress 后台。

菜单路径是:设置 → 固定链接。

进去之后你会看到几个选项。默认是”朴素”,链接就是 ?p=123。往下还有:

选项URL 格式适合谁
朴素?p=123谁都不适合(默认值,要改掉)
日期和名称/2024/08/31/文章名/有明确日期属性的内容,如新闻站
月份和名称/2024/08/文章名/内容有强时效性的站
数字型/archives/123几乎没人用
文章名/文章名/大部分博客、教程站

我自己选的是”文章名”,也就是链接只带文章拼音,不带日期。原因是文章的名字我一般连拼音都有 SEO 考量,带个日期反而稀释了。

这里有个容易忽略的点: WordPress 会自己生成一串”固定链接结构”的代码,但你也可以完全自定义,在”自定义结构”那个框里填。比如 /%category%/%postname%/ 这种,把分类也带进去。不过对个人博客来说,直接用”文章名”就够了,别过度设计。

保存设置之后,WordPress 会尝试自动生成 .htaccess 文件(Apache 环境)。如果你用的是 Nginx(宝塔面板默认就是),这一步其实”看着成功了,实际没生效”——因为你还没配 Nginx 规则。这就是我当年白屏的根源。


第二步:宝塔面板里配 Nginx 伪静态规则(重点)

用了宝塔面板的读者,绝大多数都是 Nginx 环境。Nginx 不认识 .htaccess,所以光在 WordPress 后台改固定链接是没用的,你访问文章会看到 404。

正确做法是:在宝塔面板里给网站配一段伪静态规则。

操作路径:宝塔面板 → 网站 → 找到你的站点 → 设置 → 伪静态。在模板下拉框里选 wordpress,宝塔会自动填好规则,保存就完事。

如果你用的是非宝塔环境,或者规则被清空了,手动把下面这段贴进 Nginx 的 site 配置里:

location / {
    try_files $uri $uri/ /index.php?$args;
}

rewrite /wp-admin$ $scheme://$host$uri/ permanent;

这段规则翻译成人话就是:用户访问一个地址,先找服务器上有没有对应的真实文件;没有,就往回退到 index.php,把 URL 交给 WordPress 处理。 这正是伪静态的精髓——文件不存在没关系,WordPress 会接住。

配完之后,重启 Nginx,再去访问文章链接,URL 就正常了,不再 404。

我当年踩的坑是这个: 我在宝塔里配完规则,忘记点”保存”,直接刷新网站,发现还是 404,以为规则写错了,又去瞎改 Nginx 主配置文件,最后把整个站改白屏了,急得连夜找备份恢复。如果你在网站备份上有好习惯,就不会像我当初那么狼狈。记住,配完规则先保存,再重启 Nginx,再测试,别跳步。


第三步:验证伪静态有没有真正生效

配完之后,别急着关页面,验证一下。

验证方法一: 访问一篇文章,看地址栏。如果 URL 从 ?p=123 变成了 /文章拼音/,说明固定链接生效了。

验证方法二: 更严谨一点,访问一个肯定不存在的 URL,比如 /不存在的页面123/。正常情况应该返回 404,但注意——这个 404 应该是 WordPress 的 404 页面,而不是 Nginx 的空白 404。如果你看到的是一个有导航、有样式的”页面未找到”,说明 WordPress 已经把请求接住了。

验证方法三: 回到后台固定链接设置页,重新保存一次,然后随便点开几篇文章,确认都能正常打开,没有 404。

我一般三个都做一遍,尤其是第二个,它能最直观地告诉你”规则配没配对”。


伪静态设置好之后,还有两件收尾的事

第一件:如果之前文章已经用 ?p=123 被收录了,需要处理。

你的文章如果在改固定链接之前就被搜索引擎收录了(收录的是旧链接),改完之后旧链接就失效了。这时候要么做 301 重定向,要么把旧链接提交到死链处理。这个我在死链排查那篇里详细讲过,这里提醒一句,别漏了。

第二件:固定链接结构一旦确定,尽量别改。

我见过不少人,网站跑了一年,心血来潮把固定链接从”日期和名称”改成了”文章名”。结果全站 URL 全变了,旧链接全部 404,收录掉的掉,权重散的散。固定链接是”先定后不改”的东西。 上线前的第一周,就要把这件事想清楚,选好一种结构,然后一直用下去。

如果实在要改,也得做好全站 301 的预案,一个链接一个链接地映射,不能拍脑袋就改。


伪静态这东西,说来就是两件事:后台选个固定链接格式,服务器配一段规则。五分钟能搞定的事,我却因为”知其然不知其所以然”,愣是折腾了两天还白屏过一次。

所以这篇文章我特意把原理也讲了。你懂了原理,就算以后换环境、换服务器,也不会慌——因为你知道,伪静态的本质就一句话:让 WordPress 接住所有它该接住的请求。

来自 wujianzhan.com。