PHP

2010-08-29 00:25

Apache DocumentRoot移动到apache/htdocs目录外后,总提示403无权限的错误

在Windows和Linux都碰到过,只要把主目录指到其他地方后就出现权限不够的403提示,郁闷了好久。
后来发现,原来又是Apache没配置好,是apache的mod_authz_host模块在起控制作用。

1.如果不启用vhosts

只需修改httpd.conf

默认Directory节如下,注意红色部分,表示目录/usr/local/apache/htdocs允许所有主机访问

<Directory "/usr/local/apache/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>
由于主目录被指到别的地方了,所以将蓝色部分/usr/local/apache/htdocs换成你新的主目录就OK了。

2.启用vhosts
启用vhosts的话,你就可以不作上面的修改了,因为VirtualHost可以单独配置这个节的属性,所以我们在VirtualHost这个节里配置的话就更方便了,下面的配置中,我把我的网站放在/var/vhosts/www.test.cn下。

/usr/local/apache/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
    <Directory "/var/vhosts/www.dt27.cn" >
        #Deny from all
        Allow from all
    </Directory>

    DocumentRoot "/var/vhosts/www.dt27.cn"
    ServerName www.dt27.cn
</VirtualHost>
如果把Deny from all的注释去掉,那么服务器就会拒绝所有访问(和我们刚开始把主目录移动到htdocs外而没做任何配置修改时一样,哈哈)

补充一点:
如果你是写个index.php放在目录下测试,可要注意了,记得加上默认主页index.php
DirectoryIndex index.html index.php

详细语法请看:
http://www.linuxpk.com/doc/apache/mod/mod_authz_host.html

添加新评论