AllowOverride all导致错误403

时间:2014-04-19 15:33:50

标签: .htaccess symfony wampserver apache2.4

我最近使用WampServer(版本2.4)创建了一个虚拟主机,因此我可以使用网址http://yannbergonzat.local访问我的本地网站:

<VirtualHost *>
    ServerName yannbergonzat.local
    DocumentRoot "F:\Projets\Web\yann"
    DirectoryIndex index.php
</VirtualHost>

这是来自httpd.conf的目录标记:

<Directory />
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>

本网站由Symfony2制作,因此yannbergonzat.local指向一个文件夹。如果你想访问实际的网站,你必须去yannbergonzat.local / web / app.php。

我创建了一个.htaccess文件,因此可以使用yannbergonzat.local查看该网站:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ web/$1 [QSA,L]
</IfModule>

现在是问题所在。根据AllowOverride的值,有错误。

当&#34;全部&#34;

上设置AllowOverride时

读取.htaccess文件,可以在yannbergonzat.local上访问该站点,但无法访问另一个文件夹中的资源(样式表,javascripts)(错误403)

当AllowOverride设置为&#34; none&#34;

.htaccess文件读取,网站可以在yannbergonzat.local上访问(它显示文件夹的内容),你必须写整个网址(yannbergonzat.local / web / app.php),但是可以访问另一个文件夹

中的资源(样式表,javascripts)。

我应该如何在yannbergonzat.local上使用其他文件夹中的资源正常工作?

3 个答案:

答案 0 :(得分:8)

httpd.conf的此更改非常危险

<Directory />
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>

因为它允许所有访问你安装WampServer(Apache)的整个驱动器,如果这就是C:\驱动器你让黑客的生活变得非常容易!

您应该将httpd.conf更改回

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

并将目录规范添加到您的VHOST定义中,如下所示

<VirtualHost *:80>
    ServerName yannbergonzat.local
    DocumentRoot "F:\Projets\Web\yann"
    DirectoryIndex index.php
    <Directory "F:\Projets\Web\yann">
        Options Indexes FollowSymLinks
        AllowOverride all
        Require all granted
    </Directory>
</VirtualHost>

AllowOverride none是指示Apache忽略任何.htaccess文件的说明,以便解释您所描述的内容。

设置Symfony2站点时,这是虚拟主机设置的推荐配置。您将/web文件夹指定为DocumentRoot See documentation

所以我假设(你没有指定实际的文件夹结构)你需要这样的东西:

<VirtualHost *:80>
    ServerName yannbergonzat.local
    DocumentRoot "F:/Projets/Web/yann/web"
    DirectoryIndex index.php

    <Directory "F:/Projets/Web/yann/web">
        # enable the .htaccess rewrites
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

这几乎肯定会修复您的403错误,因为您现在授予对该网站实际存在的文件夹的访问权限Require all granted

答案 1 :(得分:2)

此代码对我有用:

sudo chmod -R 755 /var/www/***

答案 2 :(得分:0)

确保SELinux没有阻止访问您的网络目录:

chcon -R -u system_u -t httpd_sys_content_t /home/user/www