You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中为每种语言配置独立域名的实现方案求助

为mcamara/laravel-localization配置独立域名的解决方案

1. 配置域名与语言的映射

先发布扩展的配置文件(未发布过的话执行):

php artisan vendor:publish --provider="Mcamara\LaravelLocalization\LaravelLocalizationServiceProvider"

在config/laravellocalization.php中新增域名-语言映射数组:

'domain_locales' => [
    'my-english-website.com' => 'en',
    'my-dutch-website.com' => 'nl',
],

2. 自定义本地化中间件

创建app/Http/Middleware/LocalizeByDomain.php,替换默认中间件逻辑,从域名识别当前语言:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;

class LocalizeByDomain
{
    public function handle(Request $request, Closure $next)
    {
        $domain = $request->getHost();
        $domainLocales = config('laravellocalization.domain_locales');

        $targetLocale = $domainLocales[$domain] ?? config('app.fallback_locale');
        
        app()->setLocale($targetLocale);
        LaravelLocalization::setLocale($targetLocale);

        return $next($request);
    }
}

在app/Http/Kernel.php中,将原有的LaravelLocalizationRoutes和LaravelLocalizationRedirectFilter中间件替换为自定义的LocalizeByDomain,注意保持中间件顺序合理。

3. 重写URL生成逻辑

扩展默认通过URL前缀生成本地化链接,我们自定义方法生成对应域名的链接。在app/helpers.php中添加辅助函数:

function localized_domain_url($locale, $path = '/')
{
    $domainLocales = config('laravellocalization.domain_locales');
    $domain = array_search($locale, $domainLocales) ?? config('app.url');
    
    return url()->to($path, [], true)->setHost(parse_url($domain, PHP_URL_HOST));
}

使用示例:

{{ localized_domain_url('en') }} {{-- 输出 my-english-website.com --}}
{{ localized_domain_url('nl', '/about') }} {{-- 输出 my-dutch-website.com/about --}}

4. 调整路由配置

移除路由中的语言前缀包裹,直接定义路由即可:

// routes/web.php
Route::get('/', function () {
    return view('welcome');
});

Route::get('/about', [AboutController::class, 'index'])->name('about');

5. 服务器配置

确保所有目标域名的虚拟主机(Nginx/Apache)都指向同一个Laravel项目的public目录,HTTPS环境下配置好对应证书。

内容的提问来源于stack exchange,提问作者Matthias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 23:47:37