我正在symfony2框架之上构建一个Web应用程序。一切都习以为常,直到由于一些问题,我不得不擦除生产symfony文件夹清理并重新安装symfony项目文件夹中的所有内容。
现在,对服务器的每个请求都返回403 You don't have permission to access / on this server.
注意:服务器软件是在ubuntu上运行的apache2。
我使用capifony进行部署,运行cap deploy:setup
和cap deploy
。
任何apache配置文件或symfony项目根目录之外的任何内容都没有变化。服务器根目录指向symfonyRoot/current/web
,该目录中的.htaccess文件如下所示:
DirectoryIndex app.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule .? %{ENV:BASE}/app.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /app.php/
</IfModule>
</IfModule>
修改
来自apache2.conf文件:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
来自虚拟主机配置:
<Directory "/var/www/SymfonyRoot/current/web">
Require all granted
AllowOverride All
Allow from All
Options None
</Directory>
我确信我忘记某个地方只是一件简单的事情,但我无法弄清楚为什么服务器拒绝任何路线的许可。
答案 0 :(得分:0)
所以,我弄清楚出了什么问题:
Options FollowSymLinks
未在/var/www/SymfonyRoot/current/web
文件夹中启用。
刚刚将Options FollowSymLinks
添加到.htaccess文件中,一切都像魅力一样!