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

标签 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/admin 但在 Laravel 4 上选择“真实”环境。

  1. 是否可以在 Laravel 4 中也对文件夹进行模式匹配,或者是否只能对域进行模式匹配?换句话说,这行得通吗?

    $env = $app->detectEnvironment(array(
        'test' => array('*/mysite/*'),
        'real' => array('*/mysite/real/*'),
    ));
    
  2. 如果是这样,我只是不知道如何编写 .htaccess 规则,我试过了

    RewriteRule ^/real(.*)$ $1
    

但它不会起作用。

最佳答案

我不确定 Laravel 的内部环境处理是否适用于文件夹,但它肯定适用于子域。 您可以选择使用两个 Apache 虚拟主机来设置您的应用程序,一个名为 test.example.local,一个名为 real.example.local,然后在 Laravel 中设置环境选项,例如这个:

$env = $app->detectEnvironment(array(
    'test' => array('test.example.local'),
    'real' => array('real.example.local'),
));

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

SetEnv LARAVEL_ENVIRONMENT test
SetEnv LARAVEL_ENVIRONMENT real

然后你可以像这样在 Laravel 中设置你的环境:

$env = $app->detectEnvironment(function()
{
    return $_SERVER['LARAVEL_ENVIRONMENT'];
});

关于php - 如何使用 .htaccess 在 Laravel 4 中选择环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18161993/

相关文章:

php - 需要为目录页面编写 htaccess 规则

php - Wamp、SlimPHP 和 Htaccess

url - 是否可以使用 mod_rewrite 用不同的域名对域名进行 URL 屏蔽?

javascript - Annyang 将语音转换为文本

php - 赫里多克不工作

php - Htaccess 重写删除尾部斜杠

php - Yii 2.0 从 URL 中隐藏/basic/web 以及 index.php

php - ffmpeg - 来自 rtsp 的实时视频,带有 mp4 碎片

php - Resque PHP(Redis 错误?)

php - 将 url service.php?p_id=1&s_id=4 重写为 service/seo