刚接触 WordPress 的时候,我完全没在意过固定链接这个东西。直到网站上线跑了两三个月,发现文章 URL 还是默认的 ?p=123 这种参数形式,才意识到问题不小。
URL 好不好看是一回事,关键是搜索引擎认不认、用户愿不愿意点。当时我硬着头皮改了固定链接结构,结果整站 404,花了一晚上做重定向。所以这篇文章把我知道的全写出来,希望对你有用。
为什么要改固定链接?默认的不好吗?
WordPress 默认的固定链接格式是:
https://你的域名.com/?p=123
这种参数式 URL 在技术上没问题,但在实际使用中至少有三个痛点:
- SEO 不友好:搜索引擎的算法里,URL 中包含关键词是一个正向信号。纯数字参数啥也看不出来,等于放弃了这个优化点。
- 用户不信任:看到一个
?p=123的链接,用户没法预判点进去是什么内容,点击率天然就低。 - 分享难看:把这种链接发到微信、Twitter 上,既没有可读性,也不方便记忆。
所以只要你的网站不是纯粹给自己看的测试站,第一步就是把固定链接改成一个有意义的格式。
常见的固定链接结构有哪些?
WordPress 后台设置 → 固定链接 里提供了几种可选方案:

因为我是从hexo迁移过来的,所有还保留了之前的风格。
朴素型:
/%year%/%monthnum%/%day%/%postname%/
带日期层级,适合新闻类、博客类站点。缺点是一篇三年前的文章 URL 里带着旧日期,看起来有点过时。
推荐型:
/%postname%/
只用文章别名,干净利落。大部分个人博客、企业站都用这个。注意文章别名的唯一性,如果两篇文章用了相同英文标题,可能会有冲突。
带分类:
/%category%/%postname%/
把分类也编进 URL,感觉上结构更清晰。但改分类名称的时候 URL 也会变,容易出死链。我个人不太推荐。
自定义混合:
/archives/%post_id%.html
仿有些 CMS 的伪静态格式,后缀带 .html。有些人觉得好看,搜索引擎也确实能识别,但信息量太低,只有一个 ID。
哪种最好?我个人最推荐 /%postname%/。短、干净、不变。如果你写的是时事新闻类内容可以加日期前缀,否则用 postname 就够了。
具体配置步骤
第一步:进后台改设置
登录 WordPress 后台,左侧菜单找到「设置」→「固定链接」。
在「常用设置」里选「文章名」,或者选「自定义结构」后填入 /%postname%/。
点「保存更改」——就这么简单,配置本身只需要十秒钟。
第二步:配置伪静态(Nginx 环境)
改完固定链接后,如果你用的是 Apache,WordPress 会自动处理重写规则。但如果是 Nginx,必须手动添加伪静态规则,否则除了首页,所有内页都会 404。
在 Nginx 的 server block 里找到 location 块,加上:
location / {
try_files $uri $uri/ /index.php?$args;
}
添加之后重载 Nginx:
sudo nginx -t
sudo systemctl reload nginx
如果用的是宝塔面板或 One-Click 安装环境(比如 LNMP),一般在站点设置里有个「伪静态」选项,选 WordPress 即可。
第三步:在文章编辑时填写别名
配置好之后,写新文章时在编辑器的 URL / 别名 字段手动填上英文或拼音的别名。
比如我这篇文章的别名就是 wordpress-permalink-setup-guide。这样做的好处是整个 URL 干净可读,而且以后改标题也不会影响链接。
容易踩坑的地方
坑一:上线后改固定链接
这是最致命的一个。
如果你的网站已经有被搜索引擎收录的文章,改了固定链接结构后,所有旧 URL 都会失效,用户点进来就是 404 页面。流量直接断崖下跌。
解决办法:在改结构之前,先安装一个重定向插件(比如 Redirection 或 Rank Math 自带的重定向功能),配置旧格式到新格式的 301 重定向。或者在 .htaccess 里手动加 RewriteRule。
坑二:文章别名重复
如果选了 /%postname%/ 格式,两篇文章用了相同的别名(比如都叫 “hello-world”),第二篇的 URL 后面会自动加上 -2、-3 这样的后缀,不好看。
写文章时养成习惯,手动填一个唯一别名就行。
坑三:中文别名的问题
有些站直接用中文做别名,出来的 URL 是经过 URL-encode 的一长串乱码——既不美观也不利于分享。
建议手动填英文或者拼音缩写。
坑四:忘记清缓存
改完固定链接后,如果有开启缓存插件(WP Rocket、W3 Total Cache 等),旧的缓存页面可能还在。清一下缓存,否则自己看到的可能还是旧结构。
发布后的检查清单
改完固定链接别急着走,按这个清单检查一遍:
- 首页能打开吗? ✅ 改固定链接不会影响首页,但顺手点一下总没错。
- 打开一篇已发布的文章,URL 是不是新格式?页面正常渲染?
- 分类页和标签页打开是否正常?
- 用旧 URL 访问,有没有返回 404?如果返回 404,说明还没配重定向。
- 看站点地图(如果配置了 XML Sitemap),里面的 URL 是不是已经更新为新结构?
- Google Search Console 里有没有突然出现大量 404 错误?
这一套检查下来,基本就不会出问题了。
关于 .htaccess 的补充
如果是 Apache 环境,WordPress 会在你保存固定链接设置时自动生成或更新 .htaccess 文件。但有些主机把 .htaccess 的写入权限关掉了,这时候你需要手动创建:
# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
把这个放到站点根目录的 .htaccess 文件里,保存后再刷新页面就好了。
总结
WordPress 固定链接的设置本身是一个很简单的操作,但它牵涉到伪静态规则、URL 规范化、重定向策略,稍不注意就会出连锁问题。
我的建议很简单:建站第一天就配好。用 /%postname%/ 格式,配好伪静态,写好别名,后面就再也不用操心这件事了。
如果你的站已经跑了一段时间,别慌,配上 301 重定向再改,完全来得及。
如果是用Docker部署的,那修改起来就会简单许多,所以我现在一直在用Docker部署了 Docker 部署 WordPress 实战记录:为什么我现在建站基本都用 Docker