15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用
01.11.2024

如何重定向404错误:Apache、Nginx和PHP完整指南

404 错误是网站可能面临的最常见——也是最具破坏性的——问题之一。当访客登陆一个不再存在的页面时,他们会遇到死路一条。这种破碎的体验会赶走用户,增加跳出率,并随着时间的推移悄悄侵蚀您的搜索引擎排名。

好消息是什么?通过正确的重定向策略,您可以拦截这些 404 错误,将用户引导到相关内容,并保护您的流量和 SEO。本综合指南涵盖了重定向 404 错误的所有主要方法,包括 Apache 的 .htaccess、Nginx 服务器块和基于 PHP 的解决方案——以及您今天可以实施的真实配置示例。

什么是 404 错误,为什么它很重要?

当服务器无法找到请求的资源时,它会返回一个 HTTP 状态代码 404 Not Found。这会因以下几个原因而发生:

  • 页面被删除或移动,但没有设置重定向
  • 用户跟随了损坏或过时的外部链接
  • 在网站迁移期间 URL 被误输入或重新构建
  • 内容更改后内部链接未更新

用户体验的角度来看,遇到 404 页面令人沮丧。从 SEO 的角度来看,它向搜索引擎表明您的网站存在结构问题。抓取预算被浪费,链接权益丧失,排名可能会受到影响——尤其是当高权限反向链接指向死 URL 时。

实施适当的 404 重定向不是可选的维护。它是运营健康、优化良好的网站的核心部分。

方法 1:使用 .htaccess 重定向 404 错误(Apache 服务器)

如果您的网站托管在 Apache 网络服务器上,.htaccess 文件是您在服务器级别管理重定向的主要工具。这种方法快速、可靠,不需要编程知识。

步骤 1:定位或创建 .htaccess 文件

.htaccess 文件位于您网站的根目录中(通常是 /public_html 或 /www)。如果它还不存在,请创建一个新的纯文本文件,并将其命名为 .htaccess——包括前面的点。

> 提示:如果您通过控制面板管理您的托管环境,您可以在文件管理器中直接找到并编辑此文件。在 VPS with cPanel 上的用户可以通过 cPanel 界面下的内置文件管理器访问它。

步骤 2:设置自定义 404 错误文档

将以下行添加到您的 .htaccess 文件中,以便在发生 404 错误时提供自定义 HTML 页面:

ErrorDocument 404 /404.html

将 /404.html 替换为您的自定义错误页面的实际路径。这告诉 Apache 提供该页面,而不是默认的服务器错误响应。

步骤 3:将所有 404 错误重定向到特定 URL

如果您想将用户重定向到工作页面——而不仅仅是显示自定义错误——请使用 Apache 的 mod_rewrite 模块:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ https://example.com/404-page [R=301,L]

这做了什么:

  • RewriteEngine On——激活重写引擎
  • RewriteCond %{REQUEST_FILENAME} !-f——检查请求的文件是否不物理存在
  • RewriteRule ^(.*)$ https://example.com/404-page [R=301,L]——将所有不存在的文件请求重定向到您选择的 URL,使用永久 (301) 重定向

> 重要:在重定向损坏的 URL 时,始终使用 301 重定向(永久)而不是 302(临时)。301 将链接权益传递给目标页面,并告诉搜索引擎移动是永久的。

步骤 4:重定向特定的死 URL

为了精确控制——重定向单个损坏的 URL 而不是所有 404——添加特定的重定向规则:

Redirect 301 /old-page.html https://example.com/new-page.html
Redirect 301 /another-old-page.html https://example.com/another-new-page.html

这种方法在网站迁移后或重新构建 URL 层次结构时是理想的。

方法 2:在 Nginx 中配置 404 重定向

如果您的服务器运行 Nginx,重定向配置在您网站配置文件的服务器块内处理,而不是在 .htaccess 文件中。

步骤 1:打开 Nginx 配置文件

Nginx 配置文件通常位于:

  • /etc/nginx/nginx.conf
  • /etc/nginx/sites-available/your-domain.com

使用文本编辑器打开相关文件:

sudo nano /etc/nginx/sites-available/your-domain.com

步骤 2:设置自定义 404 错误页面

在您的 server 块内,添加以下指令:

error_page 404 /404.html;

这指示 Nginx 在触发 404 错误时提供您的自定义 HTML 页面。

步骤 3:将 404 错误重定向到另一个 URL

要在发生 404 时将用户重定向到工作页面,请使用 Nginx 的命名位置功能:

server {
listen 80;
server_name example.com;

location / {
try_files $uri $uri/ @notfound;
}

location @notfound {
return 301 https://example.com/404-page;
}
}

这是如何工作的:

  • try_files $uri $uri/ @notfound——Nginx 首先尝试提供请求的文件或目录
  • 如果两者都不存在,它会转到 @notfound 命名位置
  • 命名位置向您指定的目标 URL 发出 301 重定向

步骤 4:测试并重新加载 Nginx

编辑配置后,在重新加载之前始终测试语法错误:

sudo nginx -t

如果测试通过并显示 “syntax is ok”,重新加载 Nginx 以应用您的更改:

sudo systemctl reload nginx

永远不要跳过语法测试——配置错误的 Nginx 文件可能会使您的整个网站离线。

> 注意:当您对服务器拥有完全 root 访问权限时,管理 Nginx 配置很简单。AlexHost 的 VPS 托管专用服务器让您完全控制您的服务器环境,使这样的配置快速而轻松。

方法 3:使用 PHP 处理 404 重定向

对于运行 PHP 的网站,您可以使用自定义 PHP 错误页面以编程方式处理 404 重定向。这种方法提供了最大的灵活性——您可以记录错误、显示动态内容或应用条件重定向逻辑。

步骤 1:创建自定义 404 PHP 文件

在根目录中创建一个名为 404.php 的文件,内容如下:

<?php
header(“HTTP/1.1 404 Not Found”);
header(“Location: https://example.com/404-page”);
exit;
?>

为了获得更友好的用户体验,显示有帮助的页面而不是立即重定向:

<?php
header(“HTTP/1.1 404 Not Found”);
?>
<!DOCTYPE html>
<html>
<head>
<title>Page Not Found</title>
</head>
<body>
<h1>404 – Page Not Found</h1>
<p>Sorry, the page you’re looking for doesn’t exist.</p>
<a href=”/”>Go Home</a>
</body>
</html>

步骤 2:将您的服务器指向自定义 PHP 文件

对于 Apache,添加到您的 .htaccess:

ErrorDocument 404 /404.php

对于 Nginx,添加到您的服务器块:

error_page 404 /404.php;
location = /404.php {
internal;
}

internal 指令确保错误页面只能由 Nginx 在内部访问——不能由直接输入 URL 的用户访问。

方法 4:WordPress 特定的 404 重定向解决方案

如果您的网站运行在 WordPress 上,您除了服务器级别的配置外,还有其他选项。

使用插件

RedirectionRank Math SEOYoast SEO 这样的插件包括内置的 404 监控和重定向管理。这些工具让您能够:

  • 在仪表板中查看所有 404 错误
  • 在不接触服务器文件的情况下设置重定向
  • 根据类似的现有 URL 自动建议重定向

编辑 functions.php

对于开发人员,您可以直接将重定向逻辑添加到您的主题的 functions.php:

<?php
function custom_404_redirect() {
if ( is_404() ) {
wp_redirect( home_url(), 301 );
exit;
}
}
add_action( ‘template_redirect’, ‘custom_404_redirect’ );
?>

这会将所有 404 错误重定向到主页,使用 301 状态。

测试您的 404 重定向

实施任何重定向方法后,彻底测试至关重要。以下是验证一切正常工作的方法:

手动浏览器测试

  1. 导航到您网站上您知道不存在的 URL(例如 example.com/nonexistent-page)
  2. 确认您被重定向到正确的目标
  3. 检查浏览器的地址栏以确保 URL 已更新

使用 curl 验证 HTTP 状态

curl -I https://example.com/nonexistent-page

在响应头中查找 “HTTP/1.1 301 Moved Permanently”,后跟指向您目标 URL 的 Location 头。

在线工具

使用以下工具:

  • Google Search Console——识别 Google 在抓取您的网站时遇到的 404 错误
  • Screaming Frog SEO Spider——抓取您的网站并标记损坏的链接
  • Redirect Checker (redirect-checker.org)——验证重定向链和最终目标

管理 404 错误的最佳实践

1. 设计有帮助的自定义 404 页面

即使您重定向大多数 404 错误,一些也会不可避免地漏掉。设计良好的自定义 404 页面应包括:

  • 清晰、友好的消息,解释页面未被找到
  • 搜索栏,以便用户可以找到他们要找的内容
  • 指向您最受欢迎的页面或类别的链接
  • 您网站的主导航菜单
  • 返回主页的链接

2. 使用 301 重定向——不是 302

对于已永久移动或删除的页面,始终使用 301(永久)重定向。302(临时)重定向不会传递 SEO 价值,并告诉搜索引擎原始 URL 可能会返回。仅当页面确实暂时不可用时才使用 302。

3. 避免重定向链

重定向链发生在 URL A 重定向到 URL B,而 URL B 重定向到 URL C 时。链中的每一跳都会削弱链接权益并减慢页面加载时间。始终直接重定向到最终目标 URL。

4. 持续监控 404 错误

404 错误不是一次性修复。新的损坏链接不断出现——来自外部网站更改其 URL、来自您自己的内容更新,以及来自用户输入错误。使用以下方式设置持续监控:

  • Google Search Console(覆盖率报告)
  • AhrefsSEMrush 网站审计工具
  • 服务器访问日志分析

5. 优先处理高价值 404 页面

并非所有 404 错误的重要性都相同。首先关注以下页面:

  • 有来自其他网站的反向链接(使用 Ahrefs 或 Moz 检查)
  • 接收大量有机搜索流量(在 Google Search Console 中可见)
  • 从您网站上的其他页面链接

6. 保持 SSL 活跃

HTTPS 网站上的 404 重定向需要有效的 SSL 证书。如果您的证书已过期,用户甚至在看到您的重定向之前会遇到安全警告。确保您的 SSL 始终是最新的——AlexHost 提供 SSL 证书以保持您的网站安全,并受到用户和搜索引擎的信任。

404 错误和 SEO:您需要了解的内容

了解 404 错误如何影响您的 SEO 有助于您正确优先处理修复。

404 错误直接伤害排名吗?

低流量、无链接页面上的单个 404 错误不会对您的排名造成有意义的伤害。但是,广泛的 404 错误——尤其是在有反向链接或大量内部链接权益的页面上——可能会:

  • 浪费抓取预算,导致 Google 抓取您较少的重要页面
  • 导致来自指向死 URL 的外部反向链接的链接权益丧失
  • 增加跳出率信号,如果用户经常登陆错误页面
  • 导致索引页面随着时间的推移从 Google 索引中被删除

软 404 比硬 404 更糟

软 404 发生在页面返回 200 OK 状态代码但显示”页面未找到”消息时。这比适当的 404 更具破坏性,因为搜索引擎可能会索引空的或无用的页面。始终确保您的错误页面返回正确的 HTTP 状态代码。

回收丧失的链接权益

当您识别有反向链接的 404 页面时,将它们重定向到

15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用