当网址的子域名被用作路由中的参数时,我需要一些帮助来澄清如何在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
当我删除外部路由组(将子域作为参数的那个)时,一切都按预期工作。
非常感谢任何帮助
答案 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', '.*');
});