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

Nginx下子目录(/tips)中WordPress运行异常求助

修复Ubuntu 16.04 Nginx下WordPress子目录/tips的访问问题

我来帮你搞定这个WordPress子目录的Nginx配置问题,看起来你现在的规则有点混乱,导致浏览器兼容性问题(Edge完全无法访问、Chrome勉强可用)。咱们一步步来修复:

关键问题分析

你当前配置里的全局rewrite ^/tips/(.*) /tips/index.php?$args;和后面的rule_3相关if判断,是导致问题的核心。Nginx的if指令行为经常不符合直觉,全局rewrite还会打乱WordPress的URL解析逻辑,干扰静态资源和PHP请求的正常处理。

修复步骤

  • 移除冗余规则:删掉针对/tips的全局rewrite和所有rule_3相关的if判断,这些规则会和WordPress的路由逻辑冲突。
  • 添加专属子目录规则:用Nginx推荐的try_files指令,为/tips目录单独配置路由,确保该目录下的动态请求和静态资源都能被正确处理。
  • 确保PHP请求分流正确:在/tips的location块内嵌套PHP处理规则,保证子目录下的PHP文件能正确传递给PHP-FPM。

修改后的完整Nginx配置

server {
    listen 443 ssl;
    server_name www.domain.co.uk;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
    root /var/www/domain.co.uk;
    index index.php;

    ssl on;
    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/www_domain_co_uk.key;
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS +RC4 RC4";
    ssl_prefer_server_ciphers on;

    # 主站路由规则
    location / {
        try_files $uri $uri.html $uri/ =404;
    }

    # WordPress子目录/tips专属路由规则
    location /tips/ {
        try_files $uri $uri/ /tips/index.php?$args;
        
        # 处理/tips目录下的PHP请求
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/run/php/php5.6-fpm.sock;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_index index.php;
            include fastcgi_params;
        }
    }

    # 主站PHP请求处理规则
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php5.6-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    # 静态资源缓存优化
    location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
        access_log off;
        log_not_found off;
        expires 30d;
    }
}

最后要做的检查

  1. 登录WordPress后台,进入设置 -> 常规,确认两个URL设置:
    • 站点地址(URL):https://www.domain.co.uk/tips
    • WordPress地址(URL):https://www.domain.co.uk/tips
  2. 执行sudo nginx -t检查配置语法是否正确,没问题的话重启Nginx:sudo systemctl restart nginx
  3. 清除浏览器缓存(尤其是Edge的缓存)后再测试访问。

这样调整后,Nginx会正确处理/tips目录下的所有请求,浏览器兼容性问题也会得到解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:23:22