文档章节

apache开启虚拟主机localhost无法访问根目录的解决方法及问题解析

big_cat
 big_cat
发布于 2015/11/21 12:27
字数 690
阅读 2676
收藏 2

先给出解决方法:在httpd-vhosts.conf中增添以下规则即可

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "your_document_root_path"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>

估计看一眼就明白了,localhost 其实也是一域名(不直接用IP访问的请求都是域名),所以它也必须有自己的一规则才能正常请求

但心细的同学又发现了,我虚拟主机的规则中没有一条的 ServerName 是 localhost 的,为何 apache 依然会做虚拟主机处理

localhost 其实是 localhost:80 即便你没有 localhost 的规则,但只要你有端口号是80的规则也会匹配成功,会以第一条以80作为端口的规则进行处理,这也就是当你开启80端口的虚拟主机后会发现 localhost 成了你第一条80端口的虚拟主机规则

<VirtualHost *:80>

在你使用 localhost 请求本地服务器时apache会首先根据端口号去虚拟主机规则中搜索端口号 80 的所有规则,然后在根据你的 domain_name 做进一步的匹配,若存在 ServerName 是 localhost 的规则,则按此规则处理,若不存在,则会在端口为 80 的规则中选择定义顺序为第一条的规则进行处理,若所有的规则中没有此次请求的端口号,则会采用 httpd.conf中定义的DocumentRoot作处理,比如规则全都是 80 端口,则我用 localhost:8080 去做请求时就会被定为到 httpd.conf 中定义的DocumentRoot了

虚拟主机:

1、用户发起请求

2、apache 解析本次请求的域名和端口号, 加载 httpd-vhosts.conf 中的规则

3、检查是否存在与本次请求 端口号 一致的规则,存在 3, 不存在 4

3、进一步检查 规则中是否存在 ServerName 与本次请求 域名一致的规则,若存在做对应处理【完全匹配】;若不存在,则取第一条端口号一致的规则作为处理【至少端口号一致也会被拦截下来】

4、虚拟主机规则匹配完全失败,则读取 httpd.conf 中定义的 DocumentRoot 作为规则处理请求

所以虚拟主机是按 端口号 域名 作为先后顺序进行匹配的,端口号一致则继续匹配域名,域名一致则精确匹配,若不存在域名一致的规则则端口号相同的规则集合中的第一条作为规则,若没有此端口号则访问默认根目录

© 著作权归作者所有

big_cat
粉丝 49
博文 237
码字总数 162865
作品 0
长宁
后端工程师
私信 提问
LAMP架构PHP模块支持与虚拟主机配置

11月14日任务 11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机 Apache和PHP结合 编辑apache的主配置文件 修改后需要执行 验证是否成功启动 网页打不开的解决思路:服务器ip是否...

robertt15
2018/11/14
15
0
Mac OS X Mavericks 配置 Apache+Mysql+PHP 详细教程

网上的教程已经有很多,这里简洁的记录一下。以 Mac OS X Mavericks 10.9.X 为例。 先附上如何进入指定目录文件夹,按键盘 Command + Shift + G ,然后输入指定目录名即可。 一、启动 Apache...

周宇YuZhou
2015/07/01
61
0
(四)Apache和PHP结合

配置http支持PHP http的主配置文件为/usr/local/apache2.4/conf/httpd.conf 这里需要修改配置文件中的4处,分别为: ServerName Require all denied AddType application/x-httpd-php .php D......

杉下
2018/08/04
27
0
LAMP架构(Apache和PHP结合、Apache默认虚拟主机)

Apache和PHP结合:配置httpd支持php 修改主配置文件 /usr/local/apache2.4/conf/httpd.conf ServerName 处取消注释(解决apache启动时提示ServerName的问题) Directory标签下 Require all deni...

Hi_Yolks
2018/08/04
24
0
WAMP下Apache配置httpd-vhosts虚拟主机多站点

开发环境:WAMP   实例一,Apache配置localhost虚拟主机步骤   1,用记事本打开apache目录下httpd文件(如:D:wampbinapacheapache2.2.8conf),找到如下模块      #Virtualhosts   ...

niuhongxia
2016/11/28
93
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
8
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
5
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部