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

Nginx环境下Laravel同服务器部署WordPress子目录遇404错误

搞定同服务器Laravel站点下通过/blog访问WordPress的方案

我来帮你解决这个问题——同一服务器上,Laravel跑在example.com,想通过example.com/blog访问WordPress,不用配置blog.example.com的DNS对吧?咱们一步步来:

第一步:修改Laravel站点的Nginx配置

首先打开Forge里example.com站点的Nginx配置文件(在站点管理的「Nginx Configuration」里就能编辑),在server块里先于Laravel默认的location /规则,添加处理/blog路径的规则:

# FORGE CONFIG (DOT NOT REMOVE!)
include forge-conf/example.com/before/*;

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.com;

    # 新增:处理/blog路径的请求
    location /blog {
        # 指向你WordPress的安装根目录(Forge部署子域名一般是这个路径,按需调整)
        root /home/forge/blog.example.com;
        index index.php index.html index.htm;

        # 优先找文件/目录,找不到就转去index.php
        try_files $uri $uri/ /blog/index.php?$args;

        # 处理WordPress的PHP请求
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            # 注意这里的PHP版本要和你的WordPress环境匹配,比如php7.4-fpm,按需改
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }

    # 保留原来的Laravel默认规则
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # 原有SSL、其他配置不动
    ssl_certificate /etc/nginx/ssl/example.com/xxxxxx/server.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com/xxxxxx/server.key;

    include forge-conf/example.com/server/*;
}

第二步:调整WordPress的配置

接下来要让WordPress知道自己的访问路径是/blog,不然内部链接会乱跳。打开WordPress根目录下的wp-config.php,添加或者修改这两行:

define('WP_HOME', 'https://example.com/blog');
define('WP_SITEURL', 'https://example.com/blog');

直接改配置比去后台设置更稳妥,避免因为路径问题进不去后台。

第三步:验证配置并重启Nginx

在Forge里改完Nginx配置后,先点「Test Nginx Configuration」检查有没有语法错误,没问题的话点「Restart Nginx」让配置生效。

要是遇到权限问题(比如WordPress加载静态资源报错),可以跑一下这条命令修复目录权限:

chown -R forge:forge /home/forge/blog.example.com

常见坑点排查

  • 访问example.com/blog出404?检查Nginx里root路径是不是真的指向WordPress的根目录,还有try_files规则有没有写错。
  • 502 Bad Gateway?看看PHP-FPM的socket路径对不对——比如你用的是PHP8.0,那路径应该是/var/run/php/php8.0-fpm.sock,别写错版本。
  • WordPress内部链接还是指向blog.example.com?确认wp-config.php里的WP_HOME和WP_SITEURL是不是设置对了,要是还不行,可以登录WordPress后台,去「设置-常规」里把站点地址和WordPress地址改成https://example.com/blog。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:09:39