添加 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】:好的:这就是我现在所做的,它已经解决了:
我的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>
-part 放在<VirtualHost > [..] </VirtualHost>
里面。
之后,我将AllowOverride AuthConfig Indexes
添加到<Directory>
选项中。
现在http://localhost
也指向 dropbox-virtualhost。所以我将dropbox.local
添加到<VirtualHost *:80>
中,使其成为<VirtualHost dropbox.local:80>
终于成功了: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 可能会很好:)【参考方案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 崩溃。但是这个答案适用于 Options All
为我工作!这是缺少的成分!【参考方案3】:
对我来说(也是 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 granted
和 Options Indexes FollowSymLinks
我在 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
【讨论】:
这真的很有帮助。太感谢了。你拯救了我的一天。 :)【参考方案5】:谢谢,成功了!但是我换了这个
AllowOverride AuthConfig Indexes
这样
AllowOverride All
否则,.htaccess 不起作用:我遇到了 RewriteEngine 问题和错误消息“RewriteEngine not allowed here”。
【讨论】:
【参考方案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】:经过如此多的更改、尝试和回答。 对于
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 的主机没有反映服务器名称。【参考方案8】:
我正在使用 xampp 1.7.3。从这里使用灵感:xampp 1.7.3 upgrade broken virtual hosts access forbidden
我不是在 httpd-vhosts.conf 中添加 <Directory> .. </Directory>
,而是在 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>
我还在 httpd.conf 中添加了Listen 8001
以完成我的设置。
希望对你有帮助
【讨论】:
【参考方案9】:对于许多人来说,这是一个权限问题,但对我来说,事实证明这个错误是由我试图提交的表单中的错误引起的。具体来说,我不小心在“动作”的值后面加上了一个“大于”的符号。所以我建议你再看看你的代码。
【讨论】:
以上是关于添加 VirtualHost 失败:访问禁止错误 403 (XAMPP) (Windows 7)的主要内容,如果未能解决你的问题,请参考以下文章
添加 VirtualHost 失败:访问禁止错误 403 (XAMPP) (Windows 7)
添加 VirtualHost 失败:访问禁止错误 403 (XAMPP) (Windows 7)