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

Hig*_*don 151 apache xampp virtualhost vhosts windows-7

我在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>
Run Code Online (Sandbox Code Playgroud)

所以我查看了我的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/
Run Code Online (Sandbox Code Playgroud)

这个错误似乎可以通过添加来解决

<directory "E:/Documenten/Dropbox/Dropbox/dummy-htdocs">
     Allow from all
</directory>
Run Code Online (Sandbox Code Playgroud)

但现在我在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/
Run Code Online (Sandbox Code Playgroud)

此外,当我尝试访问时httpd-vhosts.conf,我没有在常规中得到任何错误dropbox.local-error.log,虽然我得到了dropbox.local-error.log当我尝试访问它时.

任何人都可以帮忙......这让我很生气:S

编辑:还有http://localhost以下(我已经多次提到它,所以在任何人说之前):

<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>
Run Code Online (Sandbox Code Playgroud)

Hig*_*don 324

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

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>
Run Code Online (Sandbox Code Playgroud)

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

现在http://localhost也指向dropbox-virtualhost.所以我添加dropbox.local<VirtualHost *:80>它作为<VirtualHost dropbox.local:80>

最终它有效:D!

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

我希望其他人可以使用这些信息.

  • FWIW,我做了同样的事情,仍然有问题加入我的vhost.但是,在'Allow from all`之后添加`Require all granted`使我的配置工作. (37认同)
  • 从Apache 2.4开始,不推荐使用访问控制指令[order,allow,deny和satisfy](http://httpd.apache.org/docs/2.4/upgrading.html#run-time]).确保在使用这些指令时运行较低版本,或使用Require替代. (6认同)
  • 正如@Pascalculator所说,使用`Require all granted`**而不是**.我想强调**而不是**因为当我在我的配置中有其他选项时它不起作用,但是当我只留下它时它起作用了. (4认同)

小智 58

对我来说,当我将"目录"内容更改为:

<Directory  "*YourLocation*">
Options All
AllowOverride All
Require all granted  
</Directory>
Run Code Online (Sandbox Code Playgroud)

  • 经过多次尝试,它适用于"所有选项" (6认同)
  • 基本上这 - 我错过了Options指令."选项索引FollowSymLinks"就是我在Apache2.2,YMMV上所需要的 (2认同)

小智 9

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

<Directory "C:\projects\myfolder\htdocs">`
   AllowOverride All
   Require all granted
   Options Indexes FollowSymLinks
</Directory>` 
Run Code Online (Sandbox Code Playgroud)

这条线会导致403:

Order allow,deny
Run Code Online (Sandbox Code Playgroud)


Sit*_*thu 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>
Run Code Online (Sandbox Code Playgroud)

重新启动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  
Run Code Online (Sandbox Code Playgroud)

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


小智 6

谢谢,这很有效!但我取代了这个

AllowOverride AuthConfig Indexes
Run Code Online (Sandbox Code Playgroud)

接着就,随即

AllowOverride All
Run Code Online (Sandbox Code Playgroud)

否则,.htaccess不起作用:我遇到了RewriteEngine的问题,并出现错误消息"RewriteEngine not allowed here".