You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx rewrite规则优化:根目录WordPress搭配/dist目录Vue前端配置

优化后的Nginx配置方案

完全可以使用try_files指令实现需求,比当前使用的多段rewrite逻辑更清晰,也能避免优先级混乱的问题。

原有配置存在的问题

  • 静态资源匹配规则过于宽泛,会拦截WordPress的wp-content、wp-admin下的静态资源请求,重写到/dist目录导致后台样式、媒体资源加载失败
  • 没有增加文件存在性判断,即使根目录存在对应WordPress的真实文件,也会被重写规则拦截
  • wp-json的rewrite使用break标识,会中断后续的PHP解析逻辑,导致接口无法正常返回
  • Vue路由的兜底逻辑不需要将路径作为query参数传递,history模式仅需要兜底到index.html即可

最终配置示例

server {
    listen 80;
    server_name 你的站点域名;
    root /站点/WordPress根目录的绝对路径;
    index index.php index.html;

    # 1. 优先匹配wp-json请求,转发到WordPress入口处理
    location ~* /wp-json/?(.*) {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    # 2. WordPress后台路径额外兼容,保证后台跳转正常
    location /wp-admin {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    # 核心路由逻辑,对应要求的优先级2-4
    location / {
        # 先检查根目录是否存在真实文件/目录,存在直接返回(满足wp-content等路径访问)
        # 不存在则尝试匹配/dist目录下的对应文件
        # 还不存在则兜底到/dist/index.html,交给Vue路由处理
        try_files $uri $uri/ /dist/$uri /dist/index.html;
    }

    # 常规PHP解析配置,WordPress必须配置,已配置过可直接复用
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php你实际使用的版本-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

规则匹配逻辑说明

完全符合你提出的优先级要求:

  1. 所有带wp-json的请求优先被匹配,直接转发到WordPress的index.php处理,接口可正常访问
  2. 所有请求首先判断根目录下是否存在对应真实文件/目录,存在直接返回,保证wp-admin、wp-content等WordPress原生路径的所有资源正常加载
  3. 根目录不存在对应资源时,自动尝试去/dist目录下查找对应静态资源,匹配到直接返回Vue的静态资源
  4. /dist目录下也不存在对应资源时,自动兜底到/dist/index.html,Vue的history路由可正常工作,不会出现404问题

内容的提问来源于stack exchange,提问作者fatlinesofcode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:48:05