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


161

我已经在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>

1
我得到了一个答案,但我还不能发布它:(没有足够的声誉:/
Highmastdon

这些答案都不对我
有用

有人可以帮我吗?我正在尝试在MAMP stackoverflow.com/q/40405663/4480164中
cyber8200,2016年

Answers:


340

好的:这是我现在所做的,并且已解决:

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>

首先,我看到有必要设置<Directory xx:xx>选项。所以我把部分<Directory > [..] </Directory>放在INSIDE中<VirtualHost > [..] </VirtualHost>。之后,我添加AllowOverride AuthConfig Indexes<Directory>选项。

现在http://localhost还指向dropbox-virtualhost。所以我添加dropbox.local<VirtualHost *:80>它使得<VirtualHost dropbox.local:80>

终于可以了:D!

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

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


39
FWIW,我做了同样的事情,但是在进入我的虚拟主机时仍然遇到问题。但是,添加Require all granted之后Allow from all使我的配置生效。
卡米洛·迪亚斯·雷普卡(CamiloDíazRepka)2012年

httpd-vhosts.conf是Apache的配置文件。Apache“运行” PHP代码。xampp如上所述下载并安装并更改配置。
Highmastdon

6
从Apache 2.4开始,不赞成使用访问控制指令order,allow,deny和greet。使用这些指令时,请确保运行的是较低版本,或者改为使用Require。
Pascalculator

4
就像@Pascalculator所说,使用Require all granted 代替。我想强调的,而不是因为它,当我在我的配置中的其他选项不能正常工作,但是当我只剩下这一个背后它的工作。
user2428118 2014年

1
@davejal非常感谢,没问题:)我不想混蛋。确实,在这里可以进行更多的均衡:)
Highmastdon'1

60

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

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

Apache 2.4.3-现在可以使用上述添加功能,此外,我在“控制面板”中“检查”了Apache和MySQL服务,这导致XAMPP CP停止响应。未检查的服务-Apache运行,但访问被禁止错误。添加了上述权限,并且现在可以使用。谢谢!!
肖恩·肯德尔

2
基本上是这样-我错过了Options指令。Options Indexes FollowSymLinks是我在Apache2.2,YMMV上所需的一切
Ed Orsi

与选择的答案相反,这对我来说效果非常好。由于某种原因,“需要所有被授予的权限”本身就被拒绝了,因为该答案表明它无法正常工作,因为它立即使XAMPP崩溃了。但是此答案适用于<directory>之间的那些,因此感谢您的答案。
Scrydan

有人可以帮我吗?我正在尝试在MAMP stackoverflow.com/q/40405663/4480164中
cyber8200,2016年

Options All为我工作!这是缺少的成分!
西奥多·R·史密斯,

10

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

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

这行将导致403:

Order allow,deny

直到我更改为您的答案,.htaccess才起作用,谢谢。
ssi-anik

当缺少index.html且您只想显示此文件夹中的所有页面时,可以在<Directory>指令下仅添加以下内容:Require all grantedOptions Indexes FollowSymLinks
tatskie

8

我在Windows 7上使用XAMPP 1.6.7。这篇文章对我有用。

我在的文件httpd-vhosts.conf中添加了以下几行C:/xampp/apache/conf/extra
我也没有评论这条线# 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


这确实有帮助。非常感谢。你救了我的一天。:)
Abhishek Goel 2014年

6

谢谢,那工作了!但是我替换了这个

AllowOverride AuthConfig Indexes

接着就,随即

AllowOverride All

否则,.htaccess无效:我遇到了RewriteEngine和错误消息“此处不允许RewriteEngine”的问题。


3

以上建议对我没有用。我使用来自http://butlerccwebdev.net/support/testingserver/vhosts-setup-win.html的灵感在Windows上运行它

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

希望它可以帮助某人!


2

经过这么多的变化,尝试和答案。对于

SO: Windows 7 / Windows 10

Xampp版本: Xampp或Xampp Portable 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

  1. 不要编辑其他文件,例如httpd-xampp

  2. 停止Apache

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

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

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

    ##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>
    
  6. 编辑(具有管理员访问权限)您的主机文件(位于Windows\System32\drivers\etc,但有以下提示,每个域只有一个回送IP

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

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


1
为每个虚拟主机设置不同的IP地址!但是与WAMP不同,当XAMP都捆绑在一个IP地址(例如127.0.0.1 localhost,test1.localhost)中时,XAMP不会解释每个服务器的名称。
CPHPython

@CPHPython感谢您提出差异并改善我的答案。乐意效劳!我记得在这个问题上花了很多
力气

1
谢谢,也很高兴为您提供帮助!在找到答案之前,我花了相当长的时间试图弄清楚为什么Windows的主机没有反映服务器名称。
CPHPython

0

我正在使用xampp 1.7.3。从这里汲取灵感:汲取 xampp 1.7.3升级禁止损坏的虚拟主机访问

INSTEAD加<Directory> .. </Directory>的httpd-vhosts.conf,我将它添加httpd.conf文件之后<Directory "D:/xampplite/cgi-bin"> .. </Directory>

这是我在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>

我还添加Listen 8001了httpd.conf以完成设置。

希望能帮助到你


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.