添加 VirtualHost 失败:访问禁止错误 403 (XAMPP) (Windows 7)

Posted

技术标签:

【中文标题】添加 VirtualHost 失败:访问禁止错误 403 (XAMPP) (Windows 7)【英文标题】:Adding VirtualHost fails: Access Forbidden Error 403 (XAMPP) (Windows 7) 【发布时间】:2012-02-24 23:32:01 【问题描述】:

我有一个在 Windows 7 上运行的 XAMPP 安装。

我将 VirtualHost 添加到 httpd-vhosts.conf 后,“常规”http://localhost 和新的 dropbox.local 都不起作用。

这是我添加到我的httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin postmaster@dummy-host.localhost
    DocumentRoot "E:/Documenten/Dropbox/Dropbox/dummy-htdocs"
    ServerName dropbox.local
    ServerAlias www.dropbox.local
    ErrorLog "logs/dropbox.local-error.log"
    CustomLog "logs/dropbox.local-access.log" combined
</VirtualHost>

所以我查看了我的dropbox.local-error.log 以获取任何信息:

[Thu Feb 02 10:41:57 2012] [error] [client 127.0.0.1] client denied by server configuration: E:/Documenten/Dropbox/Dropbox/dummy-htdocs/

这个错误好像通过添加解决了

<directory "E:/Documenten/Dropbox/Dropbox/dummy-htdocs">
     Allow from all
</directory>

但现在我在dropbox.local-error.log 中收到此错误:

[Thu Feb 02 10:45:56 2012] [error] [client ::1] Directory index forbidden by Options directive: E:/Documenten/Dropbox/Dropbox/dummy-htdocs/

此外,当我尝试访问http://localhost 时,我在常规error.log 中没有收到任何错误,尽管我在尝试访问它时收到了error 403

任何人都可以帮忙...这让我发疯:S

编辑: 同样在httpd.conf 中有以下内容(我已经多次看到它被提及,所以在任何人说之前):

<IfModule dir_module>
    DirectoryIndex index.php index.pl index.cgi index.asp index.shtml index.html index.htm \
                   default.php default.pl default.cgi default.asp default.shtml default.html default.htm \
                   home.php home.pl home.cgi home.asp home.shtml home.html home.htm
</IfModule>

【问题讨论】:

我得到了自己的答案,但我还不能发布它:(没有足够的声誉:/ 这些答案都不适合我:( 有人可以帮我吗?我正在尝试在 MAMP ***.com/q/40405663/4480164 中实现相同的目标 ***.com/questions/27754367/… 【参考方案1】:

经过如此多的更改、尝试和回答。 对于

SO: Windows 7 / Windows 10

Xampp 版本: Xampp 或 Xampp 便携版 7.1.18 / 7.3.7(控制面板 v3.2.4)

安装程序: win32-7.1.18-0-VC14-installer / xampp-windows-x64-7.3.7-0-VC15-installer

    不要编辑 httpd-xampp 等其他文件

    停止 Apache

    打开位于**your_xampp_directory**\apache\conf\extra\httpd-vhosts.conf(您的XAMPP 目录可能默认为:C:/xampp/htdocs

    删除以下行之前的哈希(大约第 20 行):NameVirtualHost *:80(这可能是可选的)

    考虑到您的目录路径,在文件末尾添加以下虚拟主机:

    ##127.0.0.1
    <VirtualHost *:80>
        DocumentRoot "C:/xampp/htdocs"
        ServerName localhost
        ErrorLog "logs/localhost-error.log"
        CustomLog "logs/localhost-access.log" common
    </VirtualHost>
    
    ##127.0.0.2
    <VirtualHost *:80>
        DocumentRoot "F:/myapp/htdocs/"
        ServerName test1.localhost
        ServerAlias www.test1.localhost
        ErrorLog "logs/myapp-error.log"
        CustomLog "logs/myapp-access.log" common
        <Directory  "F:/myapp/htdocs/">
            #Options All # Deprecated
            #AllowOverride All # Deprecated
            Require all granted  
        </Directory>
    </VirtualHost>
    

    编辑(具有管理员权限)您的 host 文件(位于 Windows\System32\drivers\etc,但请注意以下提示,每个域只有一个环回 ip

    127.0.0.1 localhost
    127.0.0.2 test1.localhost
    127.0.0.2 www.test1.localhost
    

对于每个实例,重复第二个块,第一个是主块,仅用于“默认”目的。

【讨论】:

为每个虚拟主机设置不同的 IP 地址有效!但与 WAMP 不同的是,当 XAMP 都捆绑在一个 IP 地址中时(例如 127.0.0.1 localhost,test1.localhost),XAMP 不会解释每个服务器名称。 @CPHPython 感谢您提及差异并改进我的答案。乐意效劳!我记得在这个问题上打了很多仗 谢谢您,也很高兴为您提供帮助!在找到您的答案之前,我花了很长时间试图弄清楚为什么 windows 的主机没有反映服务器名称。【参考方案2】:

对我来说,当我将“目录”内容更改为此时:

<Directory  "*YourLocation*">
Options All
AllowOverride All
Require all granted  
</Directory>

【讨论】:

Apache 2.4.3 - 现在使用上述添加,另外我在控制面板中“检查”了导致 XAMPP CP 停止响应的 Apache 和 mysql 服务。未经检查的服务 - Apache 运行,但访问被禁止错误。添加了上述权限,现在可以使用了。谢谢!! 基本上这个 - 我错过了 Options 指令。 Options Indexes FollowSymLinks 是我在 Apache2.2 上所需要的,YMMV 与选择的答案相比,这对我来说非常有用。出于某种原因,“要求所有授予”本身,因为该答案表明它不起作用,因为它立即使 XAMPP 崩溃。但是这个答案适用于 之间的人,所以感谢您的回答。 有人可以帮我吗?我正在尝试在 MAMP ***.com/q/40405663/4480164 中实现相同的目标 只有Options All 为我工作!这是缺少的成分!【参考方案3】:

对于许多人来说,这是一个权限问题,但对我来说,事实证明这个错误是由我试图提交的表单中的错误引起的。具体来说,我不小心在“动作”的值后面加上了一个“大于”的符号。所以我建议你再看看你的代码。

【讨论】:

【参考方案4】:

好的:这就是我现在所做的,它已经解决了:

我的httpd-vhosts.conf 现在看起来像这样:

<VirtualHost dropbox.local:80>
    DocumentRoot "E:/Documenten/Dropbox/Dropbox/dummy-htdocs"
    ServerName dropbox.local
    ErrorLog "logs/dropbox.local-error.log"
    CustomLog "logs/dropbox.local-access.log" combined
    <Directory "E:/Documenten/Dropbox/Dropbox/dummy-htdocs">
        # AllowOverride All      # Deprecated
        # Order Allow,Deny       # Deprecated
        # Allow from all         # Deprecated

        # --New way of doing it
        Require all granted    
    </Directory>
</VirtualHost>

首先,我看到有必要设置&lt;Directory xx:xx&gt; 选项。所以我把&lt;Directory &gt; [..] &lt;/Directory&gt;-part 放在&lt;VirtualHost &gt; [..] &lt;/VirtualHost&gt; 里面。 之后,我将AllowOverride AuthConfig Indexes 添加到&lt;Directory&gt; 选项中。

现在http://localhost 也指向 dropbox-virtualhost。所以我将dropbox.local 添加到&lt;VirtualHost *:80&gt; 中,使其成为&lt;VirtualHost dropbox.local:80&gt;

终于成功了:D!

我是个快乐的人! :) :)

我希望其他人可以使用此信息。

【讨论】:

FWIW,我做了同样的事情,但在加入我的虚拟主机时仍然遇到问题。但是,在Allow from all 之后添加Require all granted 使我的配置工作。 httpd-vhosts.conf 是 Apache 的配置文件。 Apache '运行' php 代码。下载并安装xampp 并按上述方式更改配置。 从 Apache 2.4 开始,访问控制指令 order, allow, deny and satisfy are deprecated。确保在使用这些指令时运行的是较低版本,或者使用 Require 代替。 正如@Pascalculator 所说,使用Require all granted 代替。我想强调而不是,因为当我的配置中有其他选项时它不起作用,但是当我只留下这个选项时它起作用了。 @davejal 非常感谢,没问题 :) 我不想成为一个混蛋。确实,在这里多一点 EQ 可能会很好:)【参考方案5】:

我正在使用 xampp 1.7.3。从这里使用灵感:xampp 1.7.3 upgrade broken virtual hosts access forbidden

而不是在 httpd-vhosts.conf 中添加 &lt;Directory&gt; .. &lt;/Directory&gt;,我将它添加到 httpd.conf&lt;Directory "D:/xampplite/cgi-bin"&gt; .. &lt;/Directory&gt; 之后。

这是我在 httpd.conf 中添加的内容:

<Directory "D:/CofeeShop">
    AllowOverride All
    Options  All
    Order allow,deny
    Allow from all
</Directory>

这是我在 httpd-vhosts.conf 中添加的内容

<VirtualHost *:8001>
    ServerAdmin postmaster@dummy-host2.localhost
    DocumentRoot "D:/CofeeShop"
    ServerName localhost:8001
</VirtualHost>

我还在 httpd.conf 中添加Listen 8001 以完成我的设置。

希望对你有帮助

【讨论】:

【参考方案6】:

以上建议对我不起作用。我让它在我的窗户上运行,灵感来自 http://butlerccwebdev.net/support/testingserver/vhosts-setup-win.html

对于 httpd-vhosts.conf 中的 Http

<Directory "D:/Projects">       
AllowOverride All
Require all granted
</Directory>

##Letzgrow
<VirtualHost *:80>
DocumentRoot "D:/Projects/letzgrow"
ServerName letz.dev
ServerAlias letz.dev    
</VirtualHost>

用于在 httpd-ssl.conf 中使用 Https (Open SSL)

<Directory "D:/Projects">       
AllowOverride All
Require all granted
</Directory>

##Letzgrow
<VirtualHost *:443>
DocumentRoot "D:/Projects/letzgrow"
ServerName letz.dev
ServerAlias letz.dev    
</VirtualHost>

希望对某人有所帮助!!

【讨论】:

【参考方案7】:

我在 Windows 7 上使用 XAMPP 1.6.7。This article 为我工作。

我在 C:/xampp/apache/conf/extra 的文件 httpd-vhosts.conf 中添加了以下行。 我还取消了# NameVirtualHost *:80 行的注释

<VirtualHost mysite.dev:80>
    DocumentRoot "C:/xampp/htdocs/mysite"
    ServerName mysite.dev
    ServerAlias mysite.dev
    <Directory "C:/xampp/htdocs/mysite">
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

重新启动 apache 后,它仍然无法正常工作。 然后我必须按照文章中提到的步骤 9 编辑文件C:/Windows/System32/drivers/etc/hosts

# localhost name resolution is handled within DNS itself.
     127.0.0.1       localhost
     ::1             localhost
     127.0.0.1       mysite.dev  

然后我开始工作http://mysite.dev

【讨论】:

这真的很有帮助。太感谢了。你拯救了我的一天。 :)【参考方案8】:

对我来说(也是 Windows 7 上的 XAMPP),这是有效的:

<Directory "C:\projects\myfolder\htdocs">`
   AllowOverride All
   Require all granted
   Options Indexes FollowSymLinks
</Directory>` 

正是这一行会导致 403:

Order allow,deny

【讨论】:

.htaccess 在我更改为您的答案之前无法正常工作,谢谢。 当 index.html 丢失并且您只想显示此文件夹中的所有页面时,您可以在 指令下仅添加以下内容:Require all grantedOptions Indexes FollowSymLinks【参考方案9】:

谢谢,成功了!但是我换了这个

AllowOverride AuthConfig Indexes

这样

AllowOverride All

否则,.htaccess 不起作用:我遇到了 RewriteEngine 问题和错误消息“RewriteEngine not allowed here”。

【讨论】:

以上是关于添加 VirtualHost 失败:访问禁止错误 403 (XAMPP) (Windows 7)的主要内容,如果未能解决你的问题,请参考以下文章

添加 VirtualHost 失败:访问禁止错误 403 (XAMPP) (Windows 7)

添加 VirtualHost 失败:访问禁止错误 403 (XAMPP) (Windows 7)

apache2.4 只允许合法域名访问网站 禁止使用ip非法域名访问

访问被禁止读保护或不可读

您指定的网页无法访问 错误类型500是啥意思?

anydesk安装失败