prod环境中除 \
之外的所有路径都要求包含 app.php
. 使用 app.php
可以使用所有站点功能 . 开发环境的行为与预期一致 . 环境是Ubuntu 12.04(在Win 8 VirtualBox VM上),PHP 5.4,Apache 2.2 . 典型的Apache错误日志条目:
[客户端127.0.0.1]文件不存在:/ var / www / volunteer / web / non-profits
一些额外的细节:
-
PHP 5.4.31-1 deb.sury.org~precision 1
-
.htaccess
存在于...\web
中 -
mod_rewrite
已启用 . -
Symfony 2.5.3 prod缓存已被清除(很多次)
安装了 -
资产
-
资产倾销
-
vhost目录索引包含
app.php
-
尝试了AllowOverride all
我错过了什么?
这是.htaccess(没有评论)
DirectoryIndex app.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
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>
一条路线:
$ php app/console router:debug --env=prod
[router] Current routes
Name Method Scheme Host Path
...
nonprofits ANY ANY ANY /non-profits
3 回答
你知道Apache是否正在执行.htaccess中的内容吗?也许你需要AllowOverride all?
也许你忘了安装资产?
尝试输入您的终端:
php app / console assets:install --env = production
php app / console assetic:dump --env = production
如果您正在 生产环境 中,显然要添加--env = 生产环境 部件 .
确保您的vhost中还包含以下行:
我应该问的问题是,"Why was Apache ignoring .htaccess?"答案是在Ubuntu forums here中找到的 . 使用webmin,我更改了
AllowOverride
指令,现在它读取:这只是我一直在寻找的水平 .