Apache配置虚拟目录和虚拟主机
刚开始学习,跟着韩顺平老师的视频课件学习ing~
这是自己在配置虚拟目录时遇到的问题以及解决办法,记录下来~
---------------------------分割线君-------------------------------
我的apache安装目录为E:\apache\Apache24
想要配置的目录为D:\myblog 中的网页文件
- step1 添加虚拟目录节点
找到E:\apache\Apache24\conf 中的httpd.conf文件,增加下图红框中代码
- step2 注释documentroot路径
- step3 测试(先重启apache)
http://localhost:8080/myblog
按照韩老师的教程,理论上这样是可以成功的了。但是我测试时出错了,此时意识到可能是版本不同的问题,我的是2.4版,韩老师是2.2版~
接下来找错~
--------------------------------分割线君-----------------------------------------------------------------------------------------------------------
- 此时重启apache出错,如下图
- 检查错误原因,因为我只是修改了httpd.conf文件,所以一定是该文件问题,所以查找具体哪句代码问题。
方法:进入cmd 然后进入 Apache安装目录(具体为你自己的安装目录)\bin>
输入 httpd.exe -w -n "Apache2.4" -k start
(引号中的Apache2.4修改为你的Apache服务名,我的是2.4.20版,服务名就是Apache2.4,可以到计算机服务里找,如下图)
提示288行有问题时(提示:Syntax error on line 288 of ...........Invalid command 'Order'......),如下图
- 为什么'Order' 有问题呢——版本问题
在Apache2.4版本中,提供了由mod_authz_host支持的新的访问控制配置语法。
而2.2版本中的Order、Allow等命令在新版本中也可以得到兼容,实现这个兼容功能的模块就是mod_access_compat。
所以Load这个模块后,apache2.4就能识别这些语句了。
此时apache重启成功,所以开心地去测试了,但是。。。
- 从字面意思理解,这应该是访问权限问题,注释掉Require all denied,如下
重启apache,测试成功
下面的是配置虚拟主机
- step1 启用 httpd-vhosts.conf
找到E:/apache/Apache24/conf 中httpd.conf 文件,取消注释下面这句话
- step2 在 httpd-vhosts.conf 文件中做配置
找到E:/apache/Apache24/conf/extra 中httpd-vhosts.conf 文件,在文件末尾加如下代码
- step3 修改hosts文件
找到C:/Windows/System32/drivers/etc 中hosts文件,增加如下代码
- step4 测试
重启apache,输入 www.kailisi.com 进行测试,结果没反应,什么都不显示,如下图
但是输入 www.kailisi.com:8080 ,就能成功,如下图
注意:上面第二步配置虚拟主机的时候上面那种做法是针对apache2.2的做法。apache2.4做法略有不同
其实区别只是在于 step2 在 httpd-vhosts.conf 文件中做配置 不一样
apache2.4的做法是
apache2.4 把Order deny,allow Deny from all两项合并为Require all denied的
所以加上这两项就好了
AllowOverride none
Require all denied
例如:
<Directory />
Options +Indexes +FollowSymLinks +ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
AllowOverride none
Require all denied
</Directory>
如果按照前面的配置的话 会出现不能访问的权限错误
修改值后 :