【问题标题】:Laravel 5: Moving current site to multi regional website ( /in, /eu, etc)Laravel 5:将当前站点移动到多区域网站(/in、/eu 等)
【发布时间】:2015-12-17 00:37:46
【问题描述】:

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

我正在使用 larval 5.1,并且我知道这样做的 route::group 方法。

但我的代码在整个网站上都使用了引用 url(例如 /home、/about-us),我希望将其更改为 /in/home、/in/about-us 等,而不用硬编码网站 url每个带有 url 国家/地区段的视图或 js 文件。

有没有办法强制所有链接遍历国家段?

【问题讨论】:

  • 我删除了我对base 标签的回答,因为我意识到它只适用于相对 URL,而不是绝对 URL,所以它似乎并不是解决这个问题的方法。您可以使用子域(如 eu.mysite.com)并且绝对链接可以工作,但它使用的 url 方案与您提供的不同,并且需要不同的 DNS 和服务器设置。

标签: php .htaccess laravel routes laravel-5


【解决方案1】:

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

如果你在路由中明确定义中间件,你可以跳过它。

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
}]);

【讨论】:

    猜你喜欢
    • 2014-08-08
    • 2016-08-20
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    相关资源
    最近更新 更多