在使用 Nginx 配置 WordPress 运行于二级目录时,若主题无法正常显示,可能是因为静态资源(如 CSS、JS、图片)未正确加载。以下是可能的原因和解决方法:
1. 确保正确设置 WordPress 地址和站点地址
- 登录 WordPress 管理后台,前往
设置 -> 常规
。 - 确保以下设置正确:
- WordPress 地址 (URL):
https://example.com/subdirectory
- 站点地址 (URL):
https://example.com/subdirectory
- WordPress 地址 (URL):
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 应该可以在二级目录下正常运行并正确加载主题。