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

Posted

技术标签:

【中文标题】/www 之外的命名虚拟主机上的 Wampserver 403【英文标题】:Wampserver 403 on named virtual hosts outside of /www 【发布时间】:2012-06-07 05:24:50 【问题描述】:

当我尝试在 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 工作正常。

【问题讨论】:

您的文件系统权限是否允许访问? 当然,为什么不呢?什么需要许可? 默认情况下,并非所有系统都允许 Web 服务器用户帐户访问所有内容。 什么是网络服务器用户帐户,如何允许其访问? 我看到用户和组在 httpd.conf 中设置为“守护进程”,但在任务管理器中显示 httpd.exe 正在以 SYSTEM 身份运行。不过这并不重要。 【参考方案1】:

我想我应该更仔细地查看 http.conf。没那么长,主要是cmets。麻烦的是这个。

# 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>

我把它注释掉了,现在一切正常,虽然我猜它不太安全,但它只是一个测试服务器。

我认为&lt;Directory "m:/Work/New MD9.ca/site/"&gt; 位应该可以处理它,但我猜不是。

【讨论】:

很好的解决方案!我也在这里找到了这个http://reanweb.com/wordpress/step-step-guide-create-virtual-hosts-using-wamp/。万一有人试图找到整个过程 @Moss,虽然,您并不担心安全性,因为它是一个测试服务器,但我会向其他人提一下,您可以不注释该目录标签,以及另一个带有虚拟主机路径的目录标签web 文件夹,但使用“AllowOverride all”而不是“AllowOverride none”,这样既安全又可用。【参考方案2】:

我知道这个问题现在已经过时了,而且你已经解决了,但我遇到了这个问题并在没有删除 Require all denied 标记的情况下解决了它。

您只需将Require local(或Require all 用于在线访问)标签添加到目录标签。例如

<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 目录中声明的相同规则

【讨论】:

【参考方案3】:

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

但是,接受的答案可能不是最佳解决方案,具体取决于您希望 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 虚拟主机提供)将在我的机器上存在的位置。这紧跟在&lt;Directory "d:/wamp/www/"&gt;&lt;/Directory&gt; 块之后。

<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

【讨论】:

【参考方案4】:

&lt;Directory&gt; 标签应该在&lt;VirtualHost *:80&gt;

像这样:

<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>

【讨论】:

【参考方案5】:

如果您尝试了上述所有 .conf 编辑但均未成功,请尝试以下附加步骤:

1) 确保 DocumentRoot 和 位置相同

2) 仔细检查 标签中的“ServerName”域拼写,并检查 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) 检查配置文件语法:

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

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

Syntax OK

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

net stop dnscache
net start dnscache

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

【讨论】:

以上是关于/www 之外的命名虚拟主机上的 Wampserver 403的主要内容,如果未能解决你的问题,请参考以下文章

除了按钮之外,如何禁用表单上的所有控件?

计算机网络 域名

具有命名空间的 XML 文档上的 XPath

除了 wordpress 网站上的主页之外的所有页面上的错误 500

需要指向 www 根目录之外的文件

为啥错误“禁止”“您无权访问此服务器上的 /。”在 Windows 7 上安装 wampserver2.2d 后出现?