如何使用.htaccess在Laravel 4中选择环境?

Cra*_*nio 3 php .htaccess mod-rewrite laravel laravel-4

我有一个处于测试阶段的站点,因此它不连接到真实数据,而是连接到数据库的本地副本.

我的客户现在需要快速链接来检索一些紧急且重要的pdf报告,因此我需要设置链接到"真实数据"的网站的另一个版本.

我可以使用不同的数据库连接创建两个环境("本地"和"实际"),我想通过URL选择环境(我知道从安全的角度来看它不是很漂亮,但我们需要这是理所当然的).

所以我想用:

my.ip.address/mysite 使用测试数据库

my.ip.address/mysite/real 使用真正的数据库,重定向到没有"真实文件夹"的URL.

F.ex.:/mysite/real/admin应该重定向到/mysite/adminLaravel 4上的"真实"环境.

  1. 是否可以对Laravel 4中的文件夹进行模式匹配,或者只对域进行模式匹配?换句话说,这有用吗?

    $env = $app->detectEnvironment(array(
        'test' => array('*/mysite/*'),
        'real' => array('*/mysite/real/*'),
    ));
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果是这样,我只是无法弄清楚如何编写.htaccess规则,我试过了

    RewriteRule ^/real(.*)$ $1
    
    Run Code Online (Sandbox Code Playgroud)

但它不会起作用.

cir*_*van 5

我不确定Laravel的内部环境处理是否适用于文件夹,但它肯定适用于子域.您可以选择使用两个Apache vhost设置应用程序,一个命名test.example.local,一个命名real.example.local,然后在Laravel中设置环境选项,如下所示:

$env = $app->detectEnvironment(array(
    'test' => array('test.example.local'),
    'real' => array('real.example.local'),
));
Run Code Online (Sandbox Code Playgroud)

还有第二个选项使用.htaccess:您可以在.htaccess中设置它...

SetEnv LARAVEL_ENVIRONMENT test
SetEnv LARAVEL_ENVIRONMENT real
Run Code Online (Sandbox Code Playgroud)

然后你就可以在Laravel中设置你的环境:

$env = $app->detectEnvironment(function()
{
    return $_SERVER['LARAVEL_ENVIRONMENT'];
});
Run Code Online (Sandbox Code Playgroud)