【问题标题】:Laravel 5 - Redirect inside routes.phpLaravel 5 - 在 routes.php 中重定向
【发布时间】:2016-02-16 09:42:28
【问题描述】:

我正在从事一个具有多语言 URL 的项目,例如:

mydomain/en/.....
mydomain/fr/.....

我正在尝试更改我的 routes.php 以根据给定的代码识别语言和 setLocale,这部分很好,但如果给定的 URL 没有像 //mydomain/home 这样的代码,我想重定向到 @ 987654324@ 使用默认语言环境,或者如果 URL 是 //mydomain/ 重定向到 //mydomain/en

为此我编写了代码:

$locale = Request::segment(1);
$languages = Language::getLanguages(array("enabled"=>1));
if (in_array($locale, \Language::$available_locales)) {
    \App::setLocale($locale);
} else {
    \Redirect::to("//mydomain/".Config::get("lang.default_locale"));
}

Route::group(array('prefix' => $locale), function()
{
    Route::get('/', function () {
        return "test";
    });
});

重定向无法正常工作,有人知道如何在routes.php 中使用重定向吗?

上面的代码只是一个例子。

【问题讨论】:

    标签: php laravel redirect routes


    【解决方案1】:

    我在这里可能是错的,因为我不确定您可以使用多少普通的 php,但您可以使用 php 函数 header() 做一些事情

    而不是

        \Redirect::to("//mydomain/".Config::get("lang.default_locale"));
    

    也许:

        $header_info = Config::get("lang.default_locale");
        header("Location: //mydomain/$header_info");
    

    http://php.net/manual/en/function.header.php

    反斜杠可能导致Redirect 失败?对不起,我真的只做php,但看到这个没有答案。

    看起来可能是这样...在此脚本中 Redirect 之前没有 \:

    Laravel 4: Redirect to a given url

    【讨论】:

    • 嗨史蒂夫,是的,我可以做到,但我正在寻找如何使用 Laravel 对象,但如果我没有找到,我会像你提到的那样做,谢谢。
    • 反斜杠是否导致重定向失败?对不起,我真的只做php,但看到这个没有答案。
    • 尝试在Config::get(.... 和可能Redirect::to("//mydomain/Config::get('lang.default_locale')") 之前删除". 我认为这样的东西可能在普通的php 中有效,所以在Laravel 中可能是一样的
    • 我已经尝试过了,当我在 routes.php 中调用重定向函数时没有任何反应,如果我在控制器工作中使用相同的函数,我会尝试将此代码移动到基本控制器之后我会找到更好的解决方案。谢谢史蒂夫
    • 是否可以使用硬编码的 url 进行测试?如果是这样,您可以执行与上面的 header() 示例相同的操作,您首先将 get 放入变量中。
    猜你喜欢
    • 2014-12-11
    • 1970-01-01
    • 2015-12-18
    • 2015-08-04
    • 2016-04-06
    • 2015-04-08
    • 1970-01-01
    • 2015-08-24
    相关资源
    最近更新 更多