2014-02-06 20 views
0

example.com/configexample.com/account/login返回403禁止。不存在的文件/ URL返回403 Forbidden

在现实中,/config/account/login应该被重定向到index.php但它提供了403

我的目录结构是这样的:

/var/www/example 
└─/assets 
└─/bower_components 
└─/node_modules 
└─/partials 
└─/templates 
└─/tests 
└─/vendor 
└─index.php 

这是我的虚拟主机配置:

<VirtualHost *:80> 
    ServerName example.com 
    DocumentRoot /var/www/example 

    <DirectoryMatch "^/var/www/example/(?!(assets|partials))\w+"> 
    Require all denied 
    </DirectoryMatch> 

    <Location /> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [QSA,L] 
    </Location> 
</VirtualHost> 
  • 我想禁止配音ss到除assetspartials之外的每个文件夹,这就是为什么我添加了DirectoryMatch指令的原因。

  • 我使用一个名为Slim的PHP框架,所以我必须添加位置和重写指令。

我认为Apache认为我的URL是目录并阻止它们。有没有解锁我的网址的方法?

+0

你有一个htaccess文件? –

+0

不,我没有。 – Doggo

回答

0

尝试增加:

<Directory "/var/www/example"> 
    Order Allow,Deny 
    Allow From all 
</Directory> 

在你的虚拟主机配置的<DirectoryMatch>容器上方。


既然你使用Apache 2.4,然后使用要求所有:

<Directory "/var/www/example"> 
    Require all granted 
</Directory> 
+0

我想我不能在v2.4中使用v2.2指令。我用“要求所有授予”,它仍然无法正常工作。 – Doggo

+0

@EckV请参阅上面的编辑 –

+0

不幸的是它不起作用。我试着在指令的上面和下面添加它。 – Doggo

0

如果你使用Apache 2.4尝试在你的虚拟主机的末尾添加:

<Directory /var/www/example> 
Options Indexes FollowSymLinks MultiViews 

# If you want to enable overrides, you should read: 
# http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride 
AllowOverride All 
Require all granted 
Satisfy Any 

Order allow,deny 
Allow from all 
</Directory>