返回

WordPress Nginx URL 重写:修复 404 和 403 错误的终极指南

php

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 网站平稳运行。

常见问题解答

  1. 为什么我会收到 404 错误?

    • 你的 Nginx 配置可能不正确,URL 结构与 WordPress 永久链接设置不匹配。
  2. 为什么我会收到 403 错误?

    • Nginx 用户可能没有对 WordPress 根目录和 .htaccess 文件的读取和执行权限。
  3. 如何检查 FastCGI 进程是否正在运行?

    • 对于 PHP 7.3,运行 sudo systemctl status php7.3-fpm。对于 PHP 8.1,运行 sudo systemctl status php8.1-fpm
  4. 为什么 .htaccess 文件很重要?

    • 它包含 URL 重写规则,用于将用户请求重定向到 WordPress 的 index.php 文件。
  5. 重启 Nginx 后,我应该检查什么?

    • 检查 WordPress 网站是否可以访问,并且 404 和 403 错误已消失。