Php Laravel 5:将当前站点移动到多区域站点(/in、/eu等)

Php Laravel 5:将当前站点移动到多区域站点(/in、/eu等),php,.htaccess,laravel,routes,laravel-5,Php,.htaccess,Laravel,Routes,Laravel 5,我目前的网站url是www.mysite.com,我希望为多个国家创建一个多地区网站,如www.mysite.com/in、www.mysite.com/eu等 我使用的是幼虫5.1,我知道使用route::group方法 但我的代码在整个网站上都使用了参考url(例如/home,/about us),我希望将其改为/in/home,/in/about us等,而无需在每个视图或js文件中硬编码带有url国家段的网站url 有没有一种方法可以强制所有链接穿过国家段?一种好的方法可以是将获取要本地

我目前的网站url是www.mysite.com,我希望为多个国家创建一个多地区网站,如www.mysite.com/in、www.mysite.com/eu等

我使用的是幼虫5.1,我知道使用route::group方法

但我的代码在整个网站上都使用了参考url(例如/home,/about us),我希望将其改为/in/home,/in/about us等,而无需在每个视图或js文件中硬编码带有url国家段的网站url


有没有一种方法可以强制所有链接穿过国家段?

一种好的方法可以是将获取要本地化的目标语言的路由和设置本地化的中间件(如果支持的话)结合起来,比如本地化中间件

Route::get("{locale}/home",
          ["middleware" => "LocalizationMiddleware", function($locale) {
          // Define your route here
}]);
但是,如果在路由中显式定义中间件,则可以跳过它

Route::get("{locale}/home", function($locale) {
          App::setLocale($locale);
          // Define your route here
});
中间件是Laravel 5的新“过滤器”,您必须单独定义它。您将创建一个新的,带有:

php artisan make:middleware LocalizationMiddleware
然后,您可以在app/Http/Middleware/LocalizationMiddleware.php中找到它,并且可以在handle()方法中设置区域设置

然后,在您的路径中,您将删除区域设置代码并指定它需要使用您的中间件

Route::get("{locale}/home",
          ["middleware" => "LocalizationMiddleware", function($locale) {
          // Define your route here
}]);

一个好的方法可能是将获取要本地化的目标语言的路由和设置本地化的中间件(如果支持的话)结合起来——类似于本地化中间件

Route::get("{locale}/home",
          ["middleware" => "LocalizationMiddleware", function($locale) {
          // Define your route here
}]);
但是,如果在路由中显式定义中间件,则可以跳过它

Route::get("{locale}/home", function($locale) {
          App::setLocale($locale);
          // Define your route here
});
中间件是Laravel 5的新“过滤器”,您必须单独定义它。您将创建一个新的,带有:

php artisan make:middleware LocalizationMiddleware
然后,您可以在app/Http/Middleware/LocalizationMiddleware.php中找到它,并且可以在handle()方法中设置区域设置

然后,在您的路径中,您将删除区域设置代码并指定它需要使用您的中间件

Route::get("{locale}/home",
          ["middleware" => "LocalizationMiddleware", function($locale) {
          // Define your route here
}]);

我删除了我关于
base
标记的回答,因为我意识到它只适用于相对URL,而不是绝对URL,所以它看起来毕竟不是这个问题的解决方案。你可以使用子域(如eu.mysite.com),绝对链接也可以使用,但它使用的url方案与你介绍的不同,需要不同的DNS和服务器设置。我删除了关于
base
标记的答案,因为我意识到它只适用于相对url,而不是绝对url,所以,这看起来毕竟不是解决这个问题的办法。您可以使用子域(如eu.mysite.com),绝对链接也可以工作,但这确实使用了与您介绍的不同的url方案,并且需要不同的DNS和服务器设置。