返回
WordPress Nginx URL 重写:修复 404 和 403 错误的终极指南
php
2024-03-10 14:25:03
Nginx URL 重写:解决 WordPress 404 和 403 错误的完整指南
简介
当你使用 Nginx 为 WordPress 设置 URL 重写时,可能会遇到恼人的 404(未找到)或 403(禁止)错误。这些错误会破坏网站的访问,让用户望而却步。本文将深入探讨这些错误的潜在原因并提供逐步指南来解决它们,让你恢复网站的顺畅运行。
检查 Nginx 配置
第一步是检查 Nginx 配置文件,通常位于 /etc/nginx/sites-enabled/default
。重点关注以下部分:
location /website/blog {
try_files $uri $uri/ /website/blog/index.php;
}
location ~ \.php$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_split_path_info ^(/website/blog)(/.*)$;
include fastcgi_params;
error_page 404 /404.html;
}
确保以下内容正确:
- 将
/var/www/html
替换为 WordPress 的根目录。 - 确保 FastCGI 进程在 127.0.0.1:9000 上运行。
检查 WordPress 设置
接下来,让我们检查 WordPress 的设置。
- 永久链接: 在 WordPress 仪表盘中导航到“设置”>“永久链接”。选择“文章名称”或“自定义结构”选项,并确保 URL 结构与你希望重写为的结构相匹配。
- .htaccess 文件: 该文件应位于 WordPress 根目录中,并包含以下代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
检查服务器权限
Nginx 用户需要对 WordPress 根目录和 .htaccess 文件具有读取和执行权限。
重启 Nginx
完成所有更改后,重启 Nginx 以应用它们:
sudo systemctl restart nginx
疑难解答其他错误
如果你仍然遇到错误,请尝试以下操作:
- 检查 Nginx 错误日志: (/var/log/nginx/error.log)获取更多详细信息。
- 禁用插件: 禁用 WordPress 中的所有插件以排除冲突。
- 检查防火墙: 确保防火墙或安全软件没有阻止对 WordPress 网站的访问。
结论
通过遵循这些步骤,你可以解决 WordPress 的 Nginx URL 重写问题并修复 404 和 403 错误。确保仔细检查配置,并在需要时寻求帮助,以保持你的 WordPress 网站平稳运行。
常见问题解答
-
为什么我会收到 404 错误?
- 你的 Nginx 配置可能不正确,URL 结构与 WordPress 永久链接设置不匹配。
-
为什么我会收到 403 错误?
- Nginx 用户可能没有对 WordPress 根目录和 .htaccess 文件的读取和执行权限。
-
如何检查 FastCGI 进程是否正在运行?
- 对于 PHP 7.3,运行
sudo systemctl status php7.3-fpm
。对于 PHP 8.1,运行sudo systemctl status php8.1-fpm
。
- 对于 PHP 7.3,运行
-
为什么 .htaccess 文件很重要?
- 它包含 URL 重写规则,用于将用户请求重定向到 WordPress 的 index.php 文件。
-
重启 Nginx 后,我应该检查什么?
- 检查 WordPress 网站是否可以访问,并且 404 和 403 错误已消失。