2014-02-06 22 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>