Laravel 4 - 如何在URL中没有子域参数名重定向

时间:2014-01-18 01:30:06

标签: laravel-4

当网址的子域名被用作路由中的参数时,我需要一些帮助来澄清如何在laravel中正确生成重定向。

有问题的路线如下:

Route::group(array("domain"=>"{subdomain}.mydomain.com"),function(){
    Route::group(array("before"=>"auth"),function(){
        Route::get("logout",array("as"=>"logout",function(){
            Session::flush();
            Redirect::route("login");
        }));
    });
    Route::group(array("before"=>"guest"),function($subdomain){
        Route::get("login",array("as"=>"login",function($subdomain){
            return View::make('login'); 
        }));
    });
});

“退出”路线重定向到http://dev.mydomain.com/http://%7Bsubdomain%7D.mydomain.com/login

虽然我曾预料到: http://dev.mydomain.com/login

当我删除外部路由组(将子域作为参数的那个)时,一切都按预期工作。

非常感谢任何帮助

3 个答案:

答案 0 :(得分:1)

我通过使用Redirect::to('login')而不是使用命名路由解决了这个问题。 只有在使用Redirect::route('login')时才会发生。

答案 1 :(得分:0)

它可能与您的域名有关。如果您使用本地域,则可能在其中使用无效字符,例如" _"," +",","等

答案 2 :(得分:0)

我已经在 Laravel 4 中阅读了无数关于此问题的文章。没有一个解决方案适合我。您不能URL :: to(' login')并在子域内删除子域。 Laravel记得它。

这就是你应该" 走出去的方式"子域名。

首先,你应该命名根路径,并定义主

Route::group(['domain' => 'yourwebsite.com'], function()
{
    Route::get('/', ['uses' => 'YourController@getIndex', 'as' => 'home']);
});

其次,您可以自己构建路径

URL::route('home').'/login'

这足以解决L4子域路由问题。

如果要自动重定向到非子域URL。您可以在子域处理结束时执行此操作:

Route::group(['domain' => '{subdomain}'.'.yourwebsite.com'], function() {

    // Here goes all your subdomain handling

    // Then handle subdomain requests that where not found
    Route::get('{slug}', function($subdomain, $slug) {
        return Redirect:to(URL::route('home').'/'.$slug);
    })->where('slug', '.*');
});