Apache,添加虚拟目录

这几天在自己的虚拟机里面安装了2003,有人说window陪iis较好,但是对iis无兴趣,就自己装了apache,下面介绍如何配置自己的虚拟目录。

想配置自己的虚拟目录,那必须要知道点apache的配置文件,也就是conf/httpd.conf 了

好吧,用notepad打开(因为我需要告诉朋友没行号)

下面我来说下配置虚拟目录需要的几个设置,关于这个配置文件网上介绍的也不少,我也不是很熟悉,班门弄斧 误人子弟了那就真该死了

所以我只说下,我操作了即便确实成功的事例

我用的是apache2.2

在大约180行左右 DocumentRoot "C:/web/Apache2.2/htdocs"

这行的意思是 默认指向htdocs这个文件夹下面,也就是你直接输入 http://localhost的时候最先显示的文件所在的目录

在约190-195行

       <Directory />
                         Options FollowSymLinks
                          AllowOverride None
                          Order deny,allow
                          Deny from all
                    </Directory>

这个配置是 全局配置  ,这个<Directory /></Directory>相当于模板标签的闭合标签,

AllowOverride None 是是否允许覆盖

Order deny,allow     Deny from all 这俩个就是权限的意思,我来慢慢的说一下

Order 是顺序,排序,deny是拒绝 allow是允许如果你按照字面的意思 先拒绝,后允许,那么你就错了。

我认为前面的Order deny,allow 其实就像个一维数组,就是以deny和allow为标的数组

like this

  

如果是 Order deny,allow  那么就把deny放前面先看

如果是Order allow,deny  那么就先看allow

先看第一个其实没多大关系,关键是看最后一个就行了,

系统默认是的 allow在后,但是却没定义它,也就是没定义allow from all

所以我们要往上看一节,是deny from all

  恩?难道说 系统默认拒绝所有,就是所以都无法查看?

  对,就是这样

  那为什么我们的文件还能运行???

     因为全局配置的权限是最低的

    在214-242行左右,又对文件重新定义了。

<Directory "C:/web/Apache2.2/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all
</Directory>

它定义了   Order allow,deny  

      Allow from all

所以里面的文件都是可以访问的,你如果把我上面的代码在配置文件中注释掉,你可以测试下

报错  You don't have permission to access /index.html on this server.

对 ,你不被允许在服务器访问index.html文件。。

OK  继续往下走

  <IfModule dir_module>
      DirectoryIndex index.html index.php
  </IfModule>

这个是默认文件 ,其中越靠前权限越高,如果你想在添加,如welcome.php

你可以直接添加 每个默认文件中间有个空格。

扯了这么多,该说下重点了,如何配置虚拟目录

#配置虚拟目录  
alias /hebe "C:/web/hebe"  //定义一个别名 ,后面跟他的绝对路径
<Directory C:/web/hebe>  //跟上文提到的一样,准备队这个目录的文件进行权限配置
Order allow,deny
Allow from all        //允许所有访问
</Directory>

上面是我的配置,你需要改名字和路径,在C盘创建hebe文件夹下面随意写个文件

这样访问 localhost/hebe 就可以进行访问。

那我的这个文件夹里面的权限(Order allow,deny  Allow from all)可以不要嘛?

不要可以啊,不要就是不能访问了。

其实 上面提到的默认的全局配置相当于php中类的父类

而下面重新定义的相当于子类,如果在子类中不重新定义,讲继承父类的属性,定义了则覆盖。

网上有提到 配置虚拟目录需要 注销DocumentRoot "C:/web/Apache2.2/htdocs"

也就是  #DocumentRoot "C:/web/Apache2.2/htdocs"

经本人测试,不需要这个步骤  ,你也可以自己测试 。因为自己定义的这个hebe权限最高

它直接就越过了 DocumentRoot "C:/web/Apache2.2/htdocs"的定义

好了,说完了,若是有不懂得朋友可以留言。

若有讲错的地方,希望朋友提出来,以免误人子弟。


     

  

原文地址:https://www.cnblogs.com/Hebe0115/p/3509437.html