当我尝试在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工作正常。
答案 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
答案 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服务或重启所有服务