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

Apache 虚拟主机配置冲突导致 404 错误的排查总结

1. 问题现象
  • 访问服务器 IP(http://192.168.88.120)返回 404 Not Found

  • 确认 /var/www/html/index.html 文件存在且内容正确(web1)。

  • 检查发现 /etc/httpd/conf.d/ 下存在多个虚拟主机配置(如 a.org.confb.org.conf),均定义了不同的 DocumentRoot


2. 根本原因
  • 虚拟主机覆盖默认配置
    Apache 加载虚拟主机时,若未明确匹配到 ServerName 或 ServerAlias,可能错误使用某个虚拟主机的 DocumentRoot,而非默认的 /var/www/html

  • 缺少默认主机
    无 <VirtualHost *:80> 默认配置时,Apache 会按文件名顺序选择第一个虚拟主机作为“兜底”,导致访问 IP 时返回错误路径。


3. 解决方案
方法 1:添加默认虚拟主机

在 /etc/httpd/conf.d/ 下创建优先级最高的配置文件(如 00-default.conf):

bash

sudo vi /etc/httpd/conf.d/00-default.conf

内容:

<VirtualHost *:80>DocumentRoot "/var/www/html"ServerName localhostServerAlias 192.168.88.120  # 替换为你的服务器IP<Directory "/var/www/html">Require all granted</Directory>
</VirtualHost>

重启 Apache:

sudo systemctl restart httpd
方法 2:禁用冲突的虚拟主机(测试用)

临时重命名其他虚拟主机配置以排除干扰:

sudo mv /etc/httpd/conf.d/a.org.conf /etc/httpd/conf.d/a.org.conf.bak
sudo mv /etc/httpd/conf.d/b.org.conf /etc/httpd/conf.d/b.org.conf.bak
sudo systemctl restart httpd

测试后恢复:

sudo mv /etc/httpd/conf.d/a.org.conf.bak /etc/httpd/conf.d/a.org.conf
sudo mv /etc/httpd/conf.d/b.org.conf.bak /etc/httpd/conf.d/b.org.conf
方法 3:明确指定虚拟主机的匹配规则

确保其他虚拟主机配置中 仅响应特定域名,避免匹配到 IP 请求:

# 例如:/etc/httpd/conf.d/a.org.conf
<VirtualHost *:80>DocumentRoot "/var/www/html/a.org"ServerName a.org      # 必须指定域名ServerAlias www.a.org # 可选别名
</VirtualHost>

http://www.dtcms.com/a/330985.html

相关文章:

  • [机器学习]08-基于逻辑回归模型的鸢尾花数据集分类
  • AXI GPIO 2——ZYNQ学习笔记
  • 力扣top100(day03-02)--图论
  • Java 技术栈中间件优雅停机方案设计与实现全景图
  • 【JavaEE】多线程 -- 线程状态
  • 数据结构之顺序表相关算法题
  • 【数据分享】351个地级市农业相关数据(2013-2022)-有缺失值
  • linux中date命令
  • SAP-ABAP:SAP消息系统深度解析:架构设计与企业级应用实践
  • Wireshark中捕获的大量UDP数据
  • 23.Linux : ftp服务及配置详解
  • (论文速读)DiffusionDet - 扩散模型在目标检测中的开创性应用
  • AI搜索重构下的GEO优化服务商格局观察
  • 李沐-第六章-LeNet训练中的pycharm jupyter-notebook Animator类的显示问题
  • 轻松同步 Outlook 联系人到 Android
  • 深入解析SAE自动驾驶分级标准(0-5级)及典型落地实例
  • Ubuntu 软件源版本不匹配导致的依赖冲突问题及解决方法
  • C++ 23种设计模式的分类总结
  • C++23输出革命:std::print的崛起与工业界标准滞后的现实困境
  • 18.12 BERT问答系统核心难题:3步攻克Tokenizer答案定位与动态填充实战
  • c/c++ UNIX 域Socket和共享内存实现本机通信
  • 2021睿抗决赛 猛犸不上 Ban
  • diffusers库学习--pipeline,模型,调度器的基础使用
  • 深入解析Prompt缓存机制:原理、优化与实践经验
  • Centos9傻瓜式linux部署CRMEB 开源商城系统(PHP)
  • 流式数据服务端怎么传给前端,前端怎么接收?
  • Keil 微库(MicroLib)深度解析
  • USB 3.0 协议层 包定义
  • 微软对传统网页设计工具在2010年停止开发
  • Sql server 命令行和控制台使用二三事