由url驱动的Symfony 3环境 - 在_wdt和_profile上的404

时间:2017-04-11 08:32:12

标签: .htaccess symfony

我想用URL

来驱动我的环境(dev,prod)
myuser.ENV.domain (eg : foo.dev.test.com or foo.prod.test.com)

所以我决定在.htaccess文件中进行一些更改

DirectoryIndex app.php
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{SERVER_NAME} mydevserver.priv?$
    RewriteCond %{HTTP_HOST} ^(.+)\.(.+)\.(mydevserver.priv)?(:80)?$
    RewriteRule .* - [E=SF_USER:%1,E=SF_ENV:%2,E=SF_SERVER:%3,QSA,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ %{ENV:BASE}/app.php [L]
</IfModule>

接下来,我在app.php中做了一些更改

<?php

ini_set('memory_limit', '256M');
umask(0000);

use Symfony\Component\Debug\Debug;
use Symfony\Component\HttpFoundation\Request;

$env = filter_input(INPUT_SERVER, 'SF_ENV') ?: $_SERVER['SF_ENV'];

/** @var \Composer\Autoload\ClassLoader $loader */
$loader = require __DIR__ . '/../app/autoload.php';

if ('dev' === $env) {
    $debug = true;
    Debug::enable();
} elseif ('prod' === $env) {
    include_once __DIR__ . '/../var/bootstrap.php.cache';
    $debug = false;
} else {
    throw new \Exception('Environment Not handled');
}

$kernel = new AppKernel($env, $debug);
$kernel->loadClassCache();
//$kernel = new AppCache($kernel);

// When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter
//Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

当我继续使用prod URL时,我有Symfony 3的默认成​​功页面,没有调试工具栏。

当我使用dev URL时,我有默认的成功页面,但我没有调试工具栏。 _wdt&amp;有一个404错误。 _profiler routes。

但是,如果我继续使用app_dev.php文件,我有调试工具栏。

我可能会想念一件小事,但我无法弄清楚。

我做了一个快速测试,将app.php重命名为index.php并删除了DirectoryIndex,但它没有任何改变。

如果我在$ env var上使用var_dump,它会从环境变量SF_ENV获得良好的环境。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

不确定究竟有什么问题,但设置虚拟主机可能是提供相同结果的更简单的解决方案。

您拥有Symfony virtual host文档中所需的所有设置。如果您选择使用Apache 2.4+,请按照mod_php设置进行操作。此版本的Apache服务器也已替换

  

订单允许,拒绝           允许全部

使用:

  

要求全部授予

您还有关于如何设置虚拟主机的youtube视频教程。以下是我根据上述文档制作的虚拟主机之一的示例,vhost用于测试的简单symfony应用程序:

<VirtualHost *:80>
ServerName www.login.com
DocumentRoot "C:/xampp/htdocs/symfUser/web"
<Directory "C:/xampp/htdocs/symfUser/web">
    Require all granted
    <IfModule mod_rewrite.c>
        Options -MultiViews
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ app.php [QSA,L]
    </IfModule>
</Directory>
<Directory "C:/xampp/htdocs/symfUser/web/bundles">
    <IfModule mod_rewrite.c>
        RewriteEngine Off
    </IfModule>
</Directory>