在使用 Nginx 配置 WordPress 运行于二级目录时,若主题无法正常显示,可能是因为静态资源(如 CSS、JS、图片)未正确加载。以下是可能的原因和解决方法:


1. 确保正确设置 WordPress 地址和站点地址

  • 登录 WordPress 管理后台,前往 设置 -> 常规
  • 确保以下设置正确:
    • WordPress 地址 (URL):https://example.com/subdirectory
    • 站点地址 (URL):https://example.com/subdirectory

2. 检查 Nginx 配置

Nginx 配置需要支持 WordPress 的重写规则。以下是一个示例配置:

server {
    listen 80;
    server_name example.com;

    root /path/to/your/site;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000; # 或者 unix:/run/php/php7.4-fpm.sock
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi.conf;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|otf|eot)$ {
        expires max;
        log_not_found off;
    }
    
    # 支持二级目录
    location /subdirectory/ {
        try_files $uri $uri/ /subdirectory/index.php?$args;
    }
}

注意:

  • /path/to/your/site 替换为 WordPress 的实际路径。
  • 确保 fastcgi_pass 指向正确的 PHP-FPM 服务。

3. 确保静态资源路径正确

如果主题的静态资源路径错误,可能是因为 WordPress 生成的 URL 仍然是根目录路径。例如:

  • https://example.com/wp-content/themes/... (错误)
  • https://example.com/subdirectory/wp-content/themes/... (正确)

解决方法:

  • 在 WordPress 的根目录中编辑 wp-config.php,添加以下代码:
define('WP_HOME', 'https://example.com/subdirectory');
define('WP_SITEURL', 'https://example.com/subdirectory');
  • 确保 .htaccess 文件或 Nginx 重写规则与子目录路径匹配。

4. 更新固定链接

  • 登录 WordPress 后台,前往 设置 -> 固定链接
  • 重新保存一次现有设置(无需更改),以确保 .htaccess 或 Nginx 规则生效。

5. 检查文件权限

确保 WordPress 目录和文件具有正确的权限,静态资源可以被 Nginx 读取。

sudo chown -R www-data:www-data /path/to/your/site
sudo find /path/to/your/site -type d -exec chmod 755 {} \;
sudo find /path/to/your/site -type f -exec chmod 644 {} \;

6. 清理缓存

如果你使用了缓存插件或浏览器缓存,可能需要清理缓存以加载最新的静态资源。


7. 调试和日志

  • 检查 Nginx 日志:
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
  • 确认是否有 404 错误的静态资源请求。

按照以上步骤操作后,WordPress 应该可以在二级目录下正常运行并正确加载主题。