固定链接与伪静态规则
URL 定下来之前,先想清楚三年后
固定链接一旦上线,就被搜索引擎、客户邮件、展会名片反复引用,改一次就是一轮全站 301。这一页讲清后台那几个选项背后是什么规则、Apache 与 Nginx 各要写哪几行、改结构时旧链接怎么接住。
五种结构里
外贸站九成选同一种
后台「设置 → 固定链接」(wp-admin/options-permalink.php)给出五种预设加一个自定义框。选哪种不是审美问题,而是链路长度、关键词位置、后续迁移成本三件事的权衡。
朴素 ?p=123
形如 /?p=123,不依赖重写规则,换服务器不会 404。缺点是 URL 没有关键词,客户转发时看不出页面讲什么,也不适合印在展会资料上。除非主机不支持 rewrite,否则不建议。
日期型 /2026/11/post-name/
博客属性强,适合内容更新频繁的资讯站。工业品站用它会暴露”这篇是三年前的”,客户看到日期会怀疑产品是否还在产。产品页尤其不要带日期。
/%postname%/
最短、最干净,域名后直接跟关键词。外贸独立站的主流选择,也是我们默认给客户配的结构。产品用 /product/%postname%/,方案页用 /solution/%postname%/,靠前缀区分内容类型。
带分类前缀 /blog/%postname%/
把内容页和产品页在 URL 层分开,适合既有商城又有技术文章站点的企业。代价是路径变长,且一旦调整分类目录,旧链接会跟着变,需要额外做重定向。
纯数字 /archives/123
有人迁移老站时为了”绝不冲突”选它,实际是把关键词位置白白让出去,上线后再想改等于全站重来。除特殊合规要求,不推荐。
还有一个细节:结尾斜杠。WordPress 会把 /about 301 到 /about/,如果 CDN 或 Nginx 也做归一化,两套规则打架就会无限跳转,浏览器报 ERR_TOO_MANY_REDIRECTS,统一交给 WordPress 处理即可。
后台点一下”保存”
服务器上多了这几行
固定链接并不是 WordPress 自己解析的,它把美化后的 URL 交给服务器,由服务器转成 index.php?p=123 这样的查询串。所以”后台设置对了、前台还是 404″,问题百分之百在服务器配置这一层。
Apache:.htaccess 原文
保存固定链接后,WordPress 会尝试写入站点根目录的 .htaccess,内容被 # BEGIN WordPress 与 # END WordPress 包住。核心是三行:RewriteEngine On 打开重写,两条 RewriteCond 排除真实存在的文件与目录,最后把其余请求全部交给 index.php。
- 规则块之外的任何自定义跳转,都不要塞进这两行注释中间,升级会覆盖
- 文件权限不对时后台会提示”您应当现在更新您的 .htaccess 文件”,需要手动粘贴
- 装了缓存插件后,规则块前后可能多出 expires 与 deflate 段落,属正常
Nginx:try_files 一行
Nginx 不读 .htaccess,规则要写进站点配置。宝塔面板在「网站 → 设置 → 伪静态」里选 wordpress 即可,本质是往 server{} 里插入一段 location。手写时核心只有一句:先找文件、再找目录、都没有就交给 index.php 并带上原始参数。
- 漏掉
$args会导致分页?page=2与筛选参数全部丢失 - location 里的正则优先级高于前缀匹配,别让别的规则先截走请求
- 改完必须
nginx -t再 reload,直接重启会把错误配置带上线
装在子目录时改 RewriteBase
站点放在 /blog/ 或 /en/ 下,.htaccess 里的 RewriteBase / 要改成 RewriteBase /blog/,Nginx 的 try_files 也要相应指向子目录的 index.php。漏改的表现是所有内页跳到主域名首页,看起来像”被重定向了”。
IIS 与 Windows 主机
Windows 环境用 web.config,需要安装 URL Rewrite 模块。国内部分老虚拟主机仍在跑 IIS,规则文件不生效时先确认模块是否存在,而不是反复在后台点保存——那种情况下后台永远不会报错,只是规则写不进去。
内页全 404 或全跳首页
按这个顺序查,别乱试
服务器配置的排查要从外往里走。下面五步按命中率排序,前两步能解决大约七成的情况。
先确认是”全部”还是”部分”
首页能开、内页 404,是重写规则没生效;只有某几个页面 404,是 slug 冲突或该文章被设为草稿;后台也进不去,那可能是插件或主题报错,跟固定链接无关。
后台重存一次
不动任何选项,直接点”保存更改”。这个动作会重建 rewrite 规则缓存,也能重新触发 .htaccess 写入。改完还是 404,说明服务器层面就没放行。
查 AllowOverride
Apache 的 httpd.conf 里如果对应目录是 AllowOverride None,.htaccess 会被完全忽略且不报错。改成 All 后重启 Apache,这是虚拟主机与自建服务器差异最大的一处。
比对 location 顺序
Nginx 里如果有针对 .php 的 location 用了 ~ .php$ 且缺少 try_files,就会把 /about/ 直接当静态资源找不到。补上 try_files $uri $uri/ /index.php?$args; 再 reload。
以上都排除了,看站点是否开了多站点或装过安全插件。部分 WAF 会把带斜杠的路径判成目录遍历直接 403,日志里能看到 ModSecurity: Access denied,这种情况要加白名单,不是去改固定链接。更细的排查路径见WordPress 404 与伪静态失效处理。
已经上线还要改结构
怎么把损失压到最小
老站从 /?p=123 或日期型换成 /%postname%/ 是常见需求,尤其是接手别人做的站。核心原则只有一条:所有能拿到的旧 URL 都必须 301 到新 URL,一个都不能留成 404。
先盘点,再动手
从百度搜索资源平台、Search Console、服务器访问日志三处导出现有 URL 清单,去重后和新结构做映射。日志里出现频次最高的那批,就是必须优先保住的老链接。
- 导出的清单存成 CSV,改完逐条 curl 检查状态码
- 产品页、分类页、联系方式页优先级最高
用正则批量接住
日期型转 postname 可以用一条正则批量完成:匹配 ^/(d{4})/(d{2})/([^/]+)/$ 并重写到 /$3/。Redirection 插件支持正则来源与捕获组,也可以在 Nginx 里写 rewrite 一口气处理。
不要改 guid
看起来像一个 URL,但它不是链接,是这条记录的全局唯一标识。很多教程教人用 SQL 把 guid 批量替换成新域名,结果 RSS 阅读器把全站文章当成新内容重推一遍。要改只改 post_content 里的链接。
站点地址也要跟着改
只改固定链接不改 wp_options 里的 home 与 siteurl,会出现前台跳回旧域名、后台登录后被踢出的现象。数据库里搜 http://旧域名 会有几万条命中,用序列化安全的替换工具处理,直接 SQL replace 会把主题选项里的数组撑坏。
结构改完的一个月内,每周看一次 404 日志,把新冒出来的旧链接补进重定向表。这条尾巴通常会拖两三个月。整套动作如果和换服务器一起做,顺序安排见WordPress 网站迁移搬家。
四种结构横向对比
按你的站型选
下表的”迁移成本”指三年内改结构需要处理的 URL 数量级,不是指技术难度。
| 结构 | URL 示例 | 适用站型 | 迁移成本 | 主要风险 |
|---|---|---|---|---|
| 朴素 | /?p=123 | 临时演示站、内网系统 | 极低 | 无关键词,不适合对外推广 |
| 日期 + 文章名 | /2026/11/valve-casting/ | 资讯、博客为主 | 中 | 暴露内容时间,产品页显旧 |
| 纯文章名 | /valve-casting/ | 企业官网、外贸独立站 | 低 | slug 重复时自动加 -2 后缀 |
| 分类前缀 + 文章名 | /products/valve-casting/ | 产品线多、内容与商品混排 | 中高 | 改分类会连带改 URL |
| 自定义混合 | /en/valve-casting/ | 多语言站 | 高 | 语言目录与伪静态规则需同步 |
多语言站的 URL 结构要单独规划:/en/、/es/ 这类语言目录一旦上线,hreflang 标签、站点地图、伪静态规则三处必须严格对应,漏一处就会出现”西语页面收录成英文”。这块的处理方式在WordPress 多语言与小语种站里有详细说明。
固定链接常见五问
说明 WordPress 没有写入权限。复制提示框里给出的那段规则,用 FTP 或面板文件管理粘贴到根目录的 .htaccess,保留原有的 # BEGIN WordPress 注释结构。之后把文件权限调成 644,避免每次升级都要手动补一次。
不会。WordPress 只在极少数场景下做猜测式跳转,绝大多数旧 URL 会直接返回 404。必须自己配 301,可以用 Redirection 这类插件,也可以在 Nginx 里写 rewrite 规则。改完务必抽查二三十条老链接的实际状态码,不要只看后台”重定向已生效”的提示。
技术上能用,浏览器会把中文转成百分号编码。实际影响有三:分享到即时通讯工具容易断行、老邮件客户端会截断、英文客户看不清路径含义。对外站点建议手动填英文 slug,全小写、用连字符分词,不要用下划线。
可以,把分类前缀留空即可,但建议同时给分类加统一前缀,如 /products/,否则分类 slug 与文章 slug 同层,撞名时 WordPress 会自动加后缀,更难维护。改前确认没有页面用了相同别名。
Nginx 的 try_files 只是几次文件判断,开销可忽略。真正拖慢速度的是每次请求都打到 PHP 和数据库,属于缓存层要解决的问题,见WordPress 速度优化。把伪静态当成性能手段,是常见误解。
站还没上线,或正要改结构
先把 URL 规划定下来
把现有 URL 清单、目标结构和主机类型发给我们,可以先做一轮可行性核对:哪些链接会断、哪些要 301、服务器那边还缺哪几行配置。站点已经在跑的,也可以只做重定向方案,不动现有内容。相关阅读:CDN 加速配置。
电话/微信 13280692153 邮箱 web@wordpressx.com 地址 山东省淄博市张店区电子产业创新园 B 座