当前位置: 首页 > article >正文

404 Not Found:请求的页面不存在或已被删除。

当在访问网站时出现 “404 Not Found” 错误,表示服务器无法找到用户请求的页面或资源。这通常是因为页面不存在或路径错误。以下是详细的原因分析和解决方法,帮助你快速排查并解决问题。


一、404 错误的常见原因

  1. 文件或页面不存在

    • 请求的文件可能被删除、重命名或移动到其他目录。
  2. 路径错误

    • URL 输入有误,或者服务器配置的文件路径不正确。
  3. Web 服务器配置问题

    • 虚拟主机(Virtual Host)配置错误。
    • 网站根目录(Document Root)未正确指向。
  4. URL 重写规则问题

    • .htaccess 文件或 Nginx 的 try_files 配置有误。
  5. 权限问题

    • 文件或目录权限不足,导致服务器无法访问。
  6. 缓存问题

    • 浏览器或 CDN 缓存仍在请求已删除的页面。
  7. 动态页面路由问题

    • PHP 或其他后端框架(如 Laravel、WordPress)的路由规则未正确匹配。

二、解决方法

1. 检查文件是否存在

(1) 确认文件路径
  • 登录服务器,进入网站的根目录,检查请求的文件是否存在。

    bash

    复制

    cd /var/www/html  # 网站根目录
    ls -l
    
(2) 检查默认首页
  • 检查是否有默认首页文件(如 index.htmlindex.php)。如果没有,可以创建测试文件:

    bash

    复制

    echo "Hello World" > /var/www/html/index.html
    
(3) 测试文件访问
  • 在浏览器中访问该文件,例如:http://yourdomain.com/index.html,确认是否可以正常加载。

2. 检查 Web 服务器配置

(1) Apache 配置
  • 检查虚拟主机配置文件(通常在 /etc/apache2/sites-available//etc/httpd/conf.d/):

    plaintext

    复制

    <VirtualHost *:80>
        ServerName yourdomain.com
        DocumentRoot /var/www/html
        <Directory /var/www/html>
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
    
  • 确保 DocumentRoot 指向正确的目录。

  • 重启 Apache:

    bash

    复制

    sudo systemctl restart apache2
    
(2) Nginx 配置
  • 检查 Nginx 配置文件(通常在 /etc/nginx/sites-available//etc/nginx/conf.d/):

    nginx

    复制

    server {
        listen 80;
        server_name yourdomain.com;
        root /var/www/html;
    
        index index.html index.php;
    
        location / {
            try_files $uri $uri/ /index.php?$args;
        }
    }
    
  • 确保 root 配置正确,并启用了 try_files

  • 测试配置并重启 Nginx:

    bash

    复制

    sudo nginx -t
    sudo systemctl restart nginx
    

3. 检查 URL 重写规则

(1) Apache 的 .htaccess
  • 如果使用了 .htaccess 文件,确保文件存在且内容正确。例如,适用于 WordPress 的 .htaccess 文件:

    plaintext

    复制

    # BEGIN 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>
    # END WordPress
    
  • 确保启用了 mod_rewrite 模块:

    bash

    复制

    sudo a2enmod rewrite
    sudo systemctl restart apache2
    
(2) Nginx 的 try_files
  • 确保 try_files 配置正确,例如:

    nginx

    复制

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

4. 检查文件和目录权限

(1) 确认权限
  • 确保文件和目录对 Web 服务器用户(如 www-datanginx)可读:

    bash

    复制

    sudo chown -R www-data:www-data /var/www/html
    sudo chmod -R 755 /var/www/html
    
(2) 检查 SELinux(如果启用)
  • 如果系统启用了 SELinux,确保目录和文件的上下文正确:

    bash

    复制

    sudo chcon -R -t httpd_sys_content_t /var/www/html
    

5. 清除缓存

(1) 清理浏览器缓存
  • 打开开发者工具(F12),然后刷新页面,选择 “清除缓存并强制刷新”。
(2) 清理 CDN 缓存
  • 如果使用了 CDN(如 Cloudflare),登录 CDN 管理后台,清除缓存。

6. 检查动态页面路由

(1) 检查后端框架的路由配置
  • 如果使用了 PHP 框架(如 Laravel、CodeIgniter),确保路由规则正确:
    • Laravel 的 routes/web.php

      php

      复制

      Route::get('/', function () {
          return view('welcome');
      });
      
(2) 检查 PHP 支持
  • 确保服务器已安装并启用 PHP:

    bash

    复制

    sudo systemctl status php-fpm
    
  • 创建测试文件 /var/www/html/info.php,内容如下:

    php

    复制

    <?php
    phpinfo();
    ?>
    

    访问 http://yourdomain.com/info.php,确认 PHP 是否正常运行。


7. 检查日志文件

(1) Apache 日志
  • 检查 Apache 的错误日志:

    bash

    复制

    sudo tail -f /var/log/apache2/error.log
    
(2) Nginx 日志
  • 检查 Nginx 的错误日志:

    bash

    复制

    sudo tail -f /var/log/nginx/error.log
    
(3) 系统日志
  • 检查系统日志查看是否有相关错误:

    bash

    复制

    sudo tail -f /var/log/syslog
    

三、特殊情况

1. 页面确实被删除或移动

  • 如果页面被删除,设置 301 重定向到新的页面。例如,在 .htaccess 中添加:

    plaintext

    复制

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

2. 404 错误页面自定义

  • 通过自定义 404 页面优化用户体验:
    • Apache
      在虚拟主机配置中添加:

      apache

      复制

      ErrorDocument 404 /404.html
      
    • Nginx
      在配置文件中添加:

      nginx

      复制

      error_page 404 /404.html;
      location = /404.html {
          root /var/www/html;
      }
      

四、总结

404 错误虽然常见,但通过以下步骤可以快速解决问题:

  1. 检查文件是否存在以及路径是否正确。
  2. 确认 Web 服务器配置(虚拟主机、URL 重写规则)是否正确。
  3. 检查文件权限和日志,排除权限或配置问题。
  4. 如果页面已删除,设置 301 重定向或提供友好的 404 页面。

通过系统性排查,可以快速定位问题并恢复正常访问。如果遇到复杂问题,可以通过日志文件定位具体原因。


http://www.kler.cn/a/470585.html

相关文章:

  • 嵌入式ARM平台 openwrt系统下 基于FFmpeg 的视频采集及推流 实践
  • Maven 详细配置:Maven settings 配置文件的详细说明
  • 创建型模式2.抽象工厂模式
  • 鸿蒙HarmonyOS开发:基于Swiper组件和自定义指示器实现多图片进度条轮播功能
  • Kafka 消费者专题
  • 数据挖掘——朴素贝叶斯分类
  • QT中引入OpenCV库总结(qmake方式和cmake方式)
  • 用JAVA实现人工智能:采用框架Spring AI Java
  • 在Spring Boot中集成H2数据库:完整指南
  • HTML5 缩放动画(Zoom In/Out)详解
  • docker 删除容器和镜像
  • buildroot 编译 x264 及 ffmpeg
  • No Python at ‘C:\Users\MI\AppData\Local\Programs\Python\Python39\python.exe‘
  • 微服务中熔断和降级的区别,具体使用场景有哪些?
  • 倾斜摄影相机在不动产确权登记和权籍调查中的应用
  • 51单片机(一) keil4工程与小灯实验
  • Android git有文件没提价到本地
  • 腾讯云更改用户为root
  • 【MATLAB】绘制投资组合的有效前沿
  • 数据分析工作流
  • XXX公司面试真题
  • Selenium 八大元素定位方法及场景扩展
  • Hadoop、Flink、Spark和Kafka
  • Visual studio code编写简单记事本exe笔记
  • 【Uniapp-Vue3】image媒体组件属性
  • 【Logstash01】企业级日志分析系统ELK之Logstash 安装与介绍