转到example.com/config
或example.com/account/login
会返回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>
我想禁止访问除assets
和partials
之外的所有文件夹,这就是我添加该DirectoryMatch指令的原因。
我使用一个名为Slim的PHP框架,所以我必须添加Location和Rewrite指令。
我认为Apache认为我的URL是目录并阻止它们。有没有办法取消阻止我的网址?
答案 0 :(得分:0)
尝试添加:
<Directory "/var/www/example">
Order Allow,Deny
Allow From all
</Directory>
在vhost配置中的<DirectoryMatch>
容器上方。
由于您使用的是apache 2.4,因此请使用require all:
<Directory "/var/www/example">
Require all granted
</Directory>
答案 1 :(得分:0)
如果您正在使用Apache 2.4,请尝试在VirtualHost的末尾添加:
<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>