关于 Windows:当 DocumentRoot 指向两个不同的驱动器时,Apache 给了我 403 Access Forbidden

关于 Windows:当 DocumentRoot 指向两个不同的驱动器时,Apache 给了我 403 Access Forbidden

Apache gives me 403 Access Forbidden when DocumentRoot points to two different drives

当我尝试在文档根目录所在的驱动器与 apache 所在的驱动器不同的虚拟主机下打开页面时,我收到 403 访问被禁止。我使用 apachefriends 版本安装。这是我的 httpd-vhosts.conf 文件:

1
2
3
4
5
6
7
8
9
10
11
NameVirtualHost 127.0.0.1</p>

<p><VirtualHost 127.0.0.1>
  ServerName foo.localhost
  DocumentRoot"C:/xampp/htdocs/foo/public"
</VirtualHost></p>

<p><VirtualHost 127.0.0.1>
  ServerName bar.localhost
  DocumentRoot"F:/bar/public"
</VirtualHost>

在浏览器中打开 bar.localhost 时,Apache 给我 403 Access Forbidden。我尝试设置许多不同的访问权限,甚至对每个人都设置完全权限,但我尝试过的没有任何帮助。

编辑:谢谢!为了将来参考,在其中添加"选项索引"以显示目录索引。


你不需要

1
2
3
4
5
Options Indexes FollowSymLinks MultiViews Includes ExecCGI
AllowOverride All
Order Allow,Deny
Allow from all
Require all granted

你唯一需要的是...

1
Require all granted

...在目录部分内。

参见Apache 2.4升级端:

http://httpd.apache.org/docs/2.4/upgrading.html


在某处,您需要告诉 Apache 允许人们查看此目录的内容。

1
2
3
4
5
<Directory"F:/bar/public">
    Order Allow,Deny
    Allow from All
    # Any other directory-specific stuff
</Directory>

更多信息


对于 Apache 2.4.2:当我尝试通过 WiFi 从 iPhone 访问 Windows 7 桌面上的 WAMP 时,我不断收到 403:禁止。在一个博客上,我找到了解决方案 - 在 部分中的 Allow all 之后添加 Require all permit 。所以这就是我的 部分在

中的样子

1
2
3
4
5
6
7
<Directory"C:/wamp/www">
    Options Indexes FollowSymLinks MultiViews Includes ExecCGI
    AllowOverride All
    Order Allow,Deny
    Allow from all
    Require all granted
</Directory>

解决403:访问本地主机时被禁止。使用端口 80,443,3308(后者处理与 MySQL Server 安装冲突)
Windows 10、XAMPP 7.4.1、Apache 2.4.x 我的 Web 文件位于单独的文件夹中。

httpd.conf - 查找这些行并将其设置在您的文件所在的位置,我的是 web 文件夹。

1
2
DocumentRoot"C:/web"
<Directory"C:/web">

更改了这两行。

1
2
3
4
5
6
7
8
9
<VirtualHost *:80>
 ServerAdmin webmaster@localhost.com
 DocumentRoot"C:/web/project1"
 ServerName project1.localhost
 <Directory"C:/web/project1">
  Order allow,deny
  allow from all
 </Directory>
</VirtualHost>

到这个

1
2
3
4
5
6
7
8
<VirtualHost *:80>
 ServerAdmin webmaster@localhost.com
 DocumentRoot"C:/web/project1"
 ServerName project1.localhost
 <Directory"C:/web/project1">
  Require all granted
 </Directory>
</VirtualHost>

在您的主机文件中添加您的详细信息
C:\\\\\\\\Windows\\\\\\\\System32\\\\\\\\drivers\\\\\\\\etc\\\\\\\\hosts 文件

1
2
127.0.0.1 localhost
127.0.0.1 project1.localhost

停止启动 XAMPP,然后单击 Apache admin(或 localhost),现在显示精彩的 XAMPP 仪表板!并在 project1.localhost

访问您的项目


我已经通过从

中删除以下代码来修复它

C:\\\\\\\\wamp\\\\\\\\bin\\\\\\\\apache\\\\\\\\apache2.4.9\\\\\\\\conf\\\\\\\\extra\\\\\\\\httpd-vhosts.conf 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot"c:/Apache24/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog"logs/dummy-host.example.com-error.log"
    CustomLog"logs/dummy-host.example.com-access.log" common
 </VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot"c:/Apache24/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog"logs/dummy-host2.example.com-error.log"
    CustomLog"logs/dummy-host2.example.com-access.log" common
</VirtualHost>

并添加了

1
2
3
4
5
6
7
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot"c:/wamp/www"
    ServerName localhost
    ErrorLog"logs/localhost-error.log"
    CustomLog"logs/localhost-access.log" common
</VirtualHost>

它的作用就像魅力


推荐阅读