伪静态、缓存与 CDN
处理 WordPress 固定链接、子比主题用户中心 404、Ajax、支付回调、登录态和 CDN 缓存排除。
固定链接先于缓存
页面 404、用户中心打不开、商城商品页 404、论坛页 404,优先检查 WordPress 固定链接和服务器伪静态。不要一开始就清 CDN,因为源站规则不对时,清缓存也只是缓存新的错误。
Redis 对象缓存和 PHP OPcache 的启用顺序、检测方式和清理边界见 Redis 与 OPcache 性能优化。本页重点处理固定链接、页面缓存和 CDN。
基础步骤:
- 打开
设置 -> 固定链接。 - 选择需要的链接结构。
- 点击保存,不需要修改也保存一次。
- 清理 WordPress 缓存和 CDN 缓存。
- 访问文章页、分类页、用户中心、商品页、论坛页。
保存固定链接会刷新 WordPress rewrite 规则。子比主题的商城、论坛、用户中心等功能依赖 WordPress 的路由体系,规则没有刷新时就容易出现局部 404。
Nginx 规则
Nginx 常用 WordPress 伪静态:
location / {
try_files $uri $uri/ /index.php?$args;
}如果站点安装在子目录,要按实际目录调整。宝塔一般在 网站 -> 设置 -> 伪静态 选择 WordPress 规则。
排查要点:
| 现象 | 检查 |
|---|---|
| 所有内页 404 | Nginx 没有 WordPress rewrite |
| 只有用户中心 404 | 固定链接没刷新、用户中心页面/别名冲突 |
| 商品详情 404 | 商城重写别名、固定链接、缓存旧规则 |
| 分页 404 | pagination_base、伪静态、CDN 缓存 |
| 后台正常前台 404 | Nginx 站点配置或运行目录错误 |
修改 Nginx 配置后要测试并重载:
nginx -t
systemctl reload nginxApache 规则
Apache 需要确认根目录 .htaccess 可写,并且包含 WordPress 规则:
<IfModule mod_rewrite.c>
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]
</IfModule>如果 .htaccess 存在但规则不生效,检查 Apache 是否启用了 mod_rewrite,虚拟主机是否允许 AllowOverride All。
OpenLiteSpeed
OpenLiteSpeed 通常也使用 .htaccess,但修改规则后可能需要重启服务或清理 LSCache。出现“后台保存固定链接成功但前台仍旧 404”时,先清 LSCache,再确认虚拟主机 rewrite 是否启用。
子比主题动态路径
这些路径和请求通常不应该被当作普通 HTML 缓存:
/wp-admin/admin-ajax.php
/wp-login.php
/user
/oauth
/cart
/pay
/message实际站点可能修改用户中心、商城购物车、商品详情、支付页别名。规则要按当前站点最终 URL 调整,不要只照默认路径。
Ajax 不要缓存
子比主题大量交互通过 Ajax 完成:登录注册、验证码、用户资料、消息、私信、购物车、下单、支付、签到、收藏、点赞等。admin-ajax.php 命中缓存会出现非常奇怪的现象:
| 现象 | 常见原因 |
|---|---|
| 验证码一直错误 | 验证码请求或校验结果被缓存 |
| 登录后还是未登录 | 登录态页面命中游客缓存 |
| 按钮点击后状态不变 | Ajax 响应被缓存或被 WAF 拦截 |
| 订单支付后不更新 | 回调路径被 CDN 缓存或拦截 |
| 用户中心显示别人状态 | 登录 Cookie 没有绕过缓存 |
CDN、缓存插件、服务器缓存都要排除 admin-ajax.php。如果安全插件或 WAF 拦截 POST 请求,也会表现为按钮没反应或弹出异常提示。
登录态 Cookie
出现这些 Cookie 时,不应该命中游客 HTML 缓存:
wordpress_logged_in_
wordpress_sec_
wp-settings-
comment_author_缓存系统要按 Cookie 绕过动态缓存。否则用户登录后看到的可能还是游客页面,用户中心、消息数、余额、会员状态、购物车数量都会错。
CDN 缓存建议
域名解析、Cloudflare 代理状态、CNAME 与源站绑定的基础排查见 域名解析与站点访问。确认 DNS 正常后,再继续处理缓存策略。
适合缓存:
*.css
*.js
*.jpg
*.jpeg
*.png
*.webp
*.gif
*.svg
*.woff
*.woff2谨慎缓存或排除:
HTML 页面
POST 请求
带 query 的动态接口
登录用户请求
支付回调
验证码接口
用户中心
购物车和订单页如果一定要缓存游客 HTML,先确保 Cookie 绕过、POST 绕过、后台路径绕过、支付回调绕过都配置完成。
支付回调
支付成功但订单状态不更新时,优先确认回调是否能到达源站:
- 支付平台后台是否有回调记录。
- 回调 URL 是否是当前正式域名。
- HTTPS 证书是否有效。
- CDN/WAF 是否拦截回调。
- 回调路径是否被缓存。
- 源站 access log 是否有回调请求。
- PHP error log 是否有签名或订单处理错误。
支付回调应该直达源站动态逻辑,不能被静态缓存替代。
JS 合并压缩
缓存插件和 CDN 的 JS 优化可能影响弹窗、用户操作、图片灯箱、评论、支付和验证码。出现前端交互异常时按顺序排查:
- 关闭 JS 合并。
- 关闭 JS 延迟加载。
- 关闭 HTML 压缩。
- 排除主题核心脚本和验证码脚本。
- 清理所有层级缓存。
- 打开浏览器控制台看第一个报错。
不要同时开启多套优化插件。多个插件重复合并、压缩、延迟加载,问题会叠加。
清缓存顺序
建议从近到远:
- 浏览器缓存。
- WordPress 缓存插件。
- 对象缓存,例如 Redis。
- 服务器缓存,例如 Nginx fastcgi_cache、OpenLiteSpeed Cache。
- CDN 缓存。
- 关闭 CDN 回源测试。
如果源站正常、开 CDN 异常,问题就在 CDN 缓存规则、回源协议、WAF、资源域名或 Cookie 绕过。
参考来源
本页吸收了子比官网固定链接、伪静态、CDN 缓存配置和常见问题公开教程,并结合子比主题登录、用户中心、支付、商城、论坛等动态链路整理。