Wampserver 403位于/ www之外的命名虚拟主机上

时间:2012-06-02 02:05:52

标签: wamp virtualhost wampserver http-status-code-403

当我尝试在c:/ wamp / www /目录之外创建一个虚拟主机时,Wampserver告诉我访问被拒绝。我可以在该目录中做一个罚款。即使创建一个文件夹的符号链接,但我宁愿不必使用符号链接。为什么不起作用?

这是我在httpd.conf

末尾使用的代码
NameVirtualHost *:80

<VirtualHost *:80>  
DocumentRoot "c:/wamp/www" 
ServerName localhost 
ServerAlias localhost 
</VirtualHost> 

<VirtualHost *:80>
ServerName local.cascade
DocumentRoot c:/wamp/www/cascade/
</VirtualHost>

<VirtualHost *:80>
ServerName local.md9
ServerAlias local.md9
DocumentRoot "m:/Work/New MD9.ca/site/"
</VirtualHost>

<Directory "m:/Work/New MD9.ca/site/">
    Order Allow,Deny
    Allow from All
</Directory>

“级联”vh工作正常。

5 个答案:

答案 0 :(得分:26)

我想我应该更仔细地查看http.conf。这不是那么久,主要是评论。麻烦的是这个。

# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other 
# <Directory> blocks below.
#

<Directory />
    AllowOverride none
    Require all denied
</Directory>

我评论了它,现在的东西有效,虽然我猜它不太安全,但它只是一个测试服务器。

我认为<Directory "m:/Work/New MD9.ca/site/">位应该照顾它,但我猜不是。

答案 1 :(得分:18)

我知道这个问题已经过时了,而且你已经开始工作了,但是我遇到了这个问题,并在不删除Require all denied标记的情况下解决了这个问题。

您只需在Directory标记中添加Require local(或Require all在线访问权限)标记即可。 e.g。

<VirtualHost *:80>
    ServerName local.md9
    ServerAlias local.md9
    DocumentRoot "m:/Work/New MD9.ca/site/"

    <Directory "m:/Work/New MD9.ca/site/">
        Order Allow,Deny
        Allow from All
        Require local
    </Directory>
</VirtualHost>

您可以在httpd.conf

中的DocumentRoot目录中看到相同的规则

答案 2 :(得分:5)

我有同样的问题,但在查看这个问题后设法解决了。

但是,接受的答案可能不是最佳解决方案,具体取决于您希望Apache配置的安全程度。

我认为解决方案应该提到两件事,首先要确保安全性不受损害,其次是第二;了解Apache 2.2和2.4之间访问控制配置的区别。

确保安全不受影响

评论建议的行:

<Directory />
    AllowOverride none
    Require all denied
</Directory>

意味着您删除了应用于计算机上所有目录的默认严格安全性,正如我所理解的那样。其他人可以创建指向您的C:\very\sensitive\information目录的配置,并从那里向网站提供内容(最有可能是共享主机上的问题)。有趣的是,以下评论是在该块之上做出的:

# First, we configure the "default" to be a very restrictive set of 
# features.

然后在那个街区下面:

# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.

将所有内容锁定,然后有条件地解锁每个目录是完全合理的。

我想出了以下内容,它指向我机器上的所有网站(通过Apache虚拟主机提供)的位置。这紧跟在<Directory "d:/wamp/www/"></Directory>块之后。

<Directory "d:/wamp/sites/">
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>

然后,在每个虚拟主机配置/别名中,您可以设置适用于该目录的配置。

访问控制配置的区别

在更新版本的Apache中配置访问控制已发生变化。

过去是什么:

Order allow,deny
Allow from all

现在应该是:

Require all granted

了解更多信息:http://httpd.apache.org/docs/current/upgrading.html

答案 3 :(得分:3)

<Directory>标记应位于<VirtualHost *:80>

内 像这样:

<VirtualHost *:80>
ServerName local.md9
ServerAlias local.md9
DocumentRoot "m:/Work/New MD9.ca/site/"
    <Directory "m:/Work/New MD9.ca/site/">
        Order Allow,Deny
        Allow from All
    </Directory>
</VirtualHost>

另请注意,对于默认www文件夹之外,您应使用require而不是allow

<Directory />
    AllowOverride none
    Require all denied
</Directory>

答案 4 :(得分:1)

如果您尝试了上述所有.conf编辑但没有工作,请尝试以下附加步骤:

1)确保DocumentRoot和&lt; Directory&gt;位置是相同的

2)仔细检查&#34; ServerName&#34;您的&lt; VirtualHost&gt;中的域拼写标签,并检查域的拼写在HOST文件中是否相同(windows \ system32 \ drivers \ etc \ hosts):

示例:

<VirtualHost *:80>
    DocumentRoot "D:/vhost_directory/website_directory"
    ServerName mywebsite.local
    <Directory "D:/vhost_directory/website_directory">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

3)检查conf文件语法:

cd \wamp\bin\apache\apache2.4.9\bin
httpd -t

4)修复conf文件错误,直到获得输出:

Syntax OK

5)刷新域名缓存(必须以管理员身份运行控制台):

net stop dnscache
net start dnscache

6)在WAMP上重启Apache服务或重启所有服务