我在目录/ public_html /上有一些指向我服务器的插件域。假设addon域名为red-bananas.com和blue-bananas.com,当有人加载该域名时,我希望它指向我控制器中的特定操作。所以我在routes.php文件的底部有这个代码:
Route::get('red', 'BananasController@red');
Route::get('blue', 'BananasController@blue');
Route::any('/', function()
{
switch( Request::getHost() ){
case 'red-bananas.com':
return redirect()->action('BananasController@red');
break;
case 'blue-bananas.com':
return redirect()->action('BananasController@blue');
break;
}
});
我注意到你要去red-bananas.com,你会被重定向到网址red-bananas.com/red,如果你去blue-bananas.com,你会被重定向到blue-bananas.com /蓝色。这很好,但我有时会在我的网址上找到我需要的跟踪查询字符串,如下所示:
red-bananas.com?tid=123
理想情况下,我希望能够在会话中存储'123'到'tid'的值,但如果我在上面做Session :: put('tid','123')
return redirect()->action('BananasController@red');
它不起作用 - 会话中没有任何内容存储,跟踪数据也会丢失。如何保留跟踪数据?我需要有人能够加载URL red-bananas.com?tid=123并在我的BananasController中触发红色功能,我可以访问tid的值。
答案 0 :(得分:0)
不是吗:
switch( Request::getHost() ){
case 'red-bananas.com':
Route::get('/{tid?}', ['as' => 'bananas.red', 'uses' => 'BananasController@red']);
break;
// ... repeat for other cases
}
然后在你的BananasController中:
public function red($tid = null)
{
// ... whatever
}
答案 1 :(得分:0)
您实际上可以wrapper这将成为参数,因此您可以执行以下操作:
Route::get('red', 'BananasController@red');
Route::get('blue', 'BananasController@blue');
Route::any('/', function()
{
switch( Request::getHost() ){
case 'red-bananas.com':
return redirect()->action('BananasController@red', request()->all());
break;
case 'blue-bananas.com':
return redirect()->action('BananasController@blue', request()->all());
break;
}
});