Php 在Laravel中重定向域名

Php 在Laravel中重定向域名,php,laravel,laravel-5,Php,Laravel,Laravel 5,我想将Laravel 5中的一个短链接域重定向到examplesite.com,同时维护URI请求。例如: xyz.com/something?foo=var 将重定向到: example.com/something?foo=var 我曾尝试在路由中使用域组来实现此目的,但它在域名级别上似乎不起作用,仅在子域上起作用。我选择的另一个选项是中间件路由 我已经设置了一个工作中间件“RedirectsMiddleware”,并在我的routes文件中包含以下内容: Route::group(['m

我想将Laravel 5中的一个短链接域重定向到examplesite.com,同时维护URI请求。例如:

xyz.com/something?foo=var
将重定向到:

example.com/something?foo=var
我曾尝试在路由中使用域组来实现此目的,但它在域名级别上似乎不起作用,仅在子域上起作用。我选择的另一个选项是中间件路由

我已经设置了一个工作中间件“RedirectsMiddleware”,并在我的routes文件中包含以下内容:

Route::group(['middleware' => ['redirects'] ], function () {
    Route::get('/', 'HoldingSiteController@home');
});
我的重定向Smiddle软件如下所示:

...
    public function handle($request, Closure $next)
    {
        $protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === true ? 'https://' : 'http://';        
        $host = $_SERVER['SERVER_NAME'];
        $defaulthost = 'example.com';

        if($host != $defaulthost) {

            return Redirect::to($protocol . $defaulthost . $_SERVER['REQUEST_URI']);
        }

        return $next($request);
    }
...
当只请求“example.com”或“example.com/?something=something”时,它会很好地重定向。任何添加到末尾的路由,例如“example.com/someroute”总是引发异常,查询字符串无效。尽管我的中间件正在重定向,但它似乎正在寻找该路由:

NotFoundHttpException in RouteCollection.php line 161:

您需要使用通配符路由。url末尾的GET变量不会以您尝试的方式更改路由。访问“计数”为访问定义为route::get('/',function(){})的路由,因为您使用get变量var1访问example.com/。换句话说,为了确定HTTP请求应该选择哪个路由,GET变量通常被忽略

通配符匹配使用正则表达式路由方法->其中()

如上所述,对于空请求,还需要空路由any(“/”)。该示例还包括“any”动词而不是“get”动词,以便在其请求匹配中更加贪婪


任何添加到末尾的路线都会引发异常:
意味着什么?对不起,我不是特别清楚,我编辑了这个问题以反映我的意思。
Route::group(['middleware' => ['redirects'] ], function () {
    Route::any('/{anything}', 'HoldingSiteController@home')
        ->where('anything', '.*');
    Route::any('/', 'HoldingSiteController@home'); 
});