重新安装 symfony 2 后出现 403 禁止错误
403 Forbidden error after symfony 2 reinstall
我正在 symfony2 框架之上构建一个网络应用程序。过去一切正常,直到由于某些问题,我不得不清除生产 symfony 文件夹并重新安装 symfony 项目文件夹中的所有内容。
现在每次向服务器请求returns一个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}:: ^(/.+)/(.*)::$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/ [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>
我确信这只是我忘记某处的一件简单的事情,但我无法弄清楚为什么服务器拒绝对任何路由的许可。
所以,我知道出了什么问题:
Options FollowSymLinks
没有为 /var/www/SymfonyRoot/current/web
文件夹打开。
刚刚将 Options FollowSymLinks
添加到 .htaccess 文件中,一切又恢复正常了!
我正在 symfony2 框架之上构建一个网络应用程序。过去一切正常,直到由于某些问题,我不得不清除生产 symfony 文件夹并重新安装 symfony 项目文件夹中的所有内容。
现在每次向服务器请求returns一个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}:: ^(/.+)/(.*)::$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/ [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>
我确信这只是我忘记某处的一件简单的事情,但我无法弄清楚为什么服务器拒绝对任何路由的许可。
所以,我知道出了什么问题:
Options FollowSymLinks
没有为 /var/www/SymfonyRoot/current/web
文件夹打开。
刚刚将 Options FollowSymLinks
添加到 .htaccess 文件中,一切又恢复正常了!