Aache的虚拟主机配置虚拟目录
3. 打开 httpd.conf 文件, 添加如下代码:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
如果已存在,将Include前面的#去掉;
虚拟目录就是:文件+权限,不能随便指定,需要在apache里面的文件中指定,Apache安装就会在自己的目录下生成一个默认根目录是htdos就是里面还有个index.html
就是安装完了后,在浏览器地址输入localhost就会显示it works就是这个文件起作用了
但是这是可以更改的,就是通过更改DocumentRoot后面指定的目录,这个可以指定任意目录,但是缺点是只能指定一个网站,如果我们需要用一个Aapache管理
那么就需要用到虚拟主机,就是自己电脑本来是一台虚拟为多台,这个首先需要改host文件,就是很多域名对应一个ip:127.0.0.1这个其实需要考虑不同主机的问题,这个作用就是
就是一个中间桥梁的作用,不同的域名就是对应的ip,然后还是不需要在虚拟主机中去配置不同的域名访问的时候需要指定一定的目录,其实这样就区别开了不同网站,也就是说所谓的
虚拟主机就是在虚拟主机配置文件中指定不同的文件夹来达到虚拟主机的目的,这里的不同文件夹就是被外界看来是不同的主机
站点:一个网站的所有资源文件夹
出错及解决方案:
之前的虚拟主机的配置文件是这样写的:而且还参杂了很多乱七八糟的杨丽:
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "c:/Apache24/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "D:/web1"
ServerName www.sina.com
<Directory "D:/web1">
Allow from all
</Directory>
</VirtualHost>
<Directory "D:/web1">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:80>
#是否列出文件目录结构
Options indexes
#配置网站首页面
DirectoryIndex abc.html abc2.html
#配置404错误页面引导用户进入新页面
errorDocument 404 /404.html
#配置rewrite规则
RewriteEngine On
DocumentRoot "C:/myenv/apache/htdocs/static2"
#Directory配置节点,用于指定该目录下的文件或是图片的访问权限
#设置主机的错误页面或者欢迎页面
ServerName www.hsp.com
<Directory "C:/myenv/apache/htdocs/static2">
#这里可以指定是否让人访问
Allow from all
</Directory>
</VirtualHost>
结果提示:没有权限访问:403
然后我改成这样:
<VirtualHost *:80>
DocumentRoot "D:/web1"
ServerName www.sina.com
<Directory "D:/web1">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
简洁美观但成功了
还需要注意APche主配置文件的设置:应该关闭默认的虚拟目录:现在已经没有必要了。当然打开是不会影响虚拟主机,但是虚拟目录的网站无法访问的所以还是注释掉吧
然后把虚拟主机肯定是要开启的
-----------------------------------------------------
2015/12/9
通过大目录和小目录来指定文件的权限
左边是大目录,右边是小目录,大目录的权限设置了,小目录就可以继承过来
一般只有通过ip+域名或者ip+端口来寻找一个项目,这个单独ip一般不能直接访问网站,比如sina和suhu都是不行,当然也可能是因为别人封闭了
ip和域名二选一吧,如果在虚拟主机中设置了ip进行访问也可以,就是不设置域名,直接用ip解析就行。但是下一个项目如果也是用该Ip那么访问ip就是默认访问第一个项目
所以ip是必要条件,域名不是必要条件,但是域名+ip就可以更精准的确定一个项目
最后一次这样居然对了
<VirtualHost *:80>
DocumentRoot "D:/web1"
ServerName www.joy.com
<Directory "D:/web1">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
下面是首先指定大目录权限,下面的小目录就不需要指定:
<Directory "D:/web">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:80>
DocumentRoot "D:/web/ceshi"
ServerName www.ceshi.com
<Directory "D:/web/ceshi">
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "D:/web/cms"
ServerName www.cms.com
<Directory "D:/web/cms">
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "D:/web/center"
ServerName www.center.com
<Directory "D:/web/center">
</Directory>
</VirtualHost>
最后又出现apache好像没有开启重写的现象,但是明明开启了,解决办法参考:
感谢:http://www.win4000.com/course_detail_27842.html
最后在http.config文件修改:
<Directory />
AllowOverride All
Require all denied
</Directory>
在公司中同事推荐使用配置一个总的,这样增加任何项目不需要再配置
<Directory "D:/web"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted Order allow,deny Allow from all </Directory> <VirtualHost *:80> DocumentRoot "D:/web" ServerName 127.0.0.1 <Directory "D:/web"> </Directory> </VirtualHost>