如何在 Laravel 中使用具有不同页面和路由的多个域?

Mac*_*vão -1 php laravel

我已经有了答案,我想与需要它的人分享解决方案。

如何在 Laravel 中使用具有不同页面和路由的多个域?

Mac*_*vão 5

我花了很多时间寻找解决方案,但没有具体的解决方案,总是代码复杂而凌乱,最后我用干净的代码开发了一个实用的解决方案。

1 - 首先,必须将laravel集中在一个域中,然后您必须将其他域指向主域,您可以访问您的dns管理器并为此使用CNAME记录。

2 - 在您的 Laravel 中,您必须使用以下内容创建一个控制器主页,替换必要的内容:

/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */
public function index(Request $request)
{
    $origin = array("mydomain.com", "mydomain2.com");
    $domain = parse_url(request()->root())['host'];

    if (in_array($domain, $origin)) {
        if ($domain === 'mydomain.com') {
            return view('myview'));
        } 
        if ($domain === 'mydomain2.com') {
            return view('myview2'));
        } 
    } else{ 
        return view('unauthorized');
    } 
}
Run Code Online (Sandbox Code Playgroud)

3 - 最后(可选),使用只能由该域访问的 url 创建路由,请执行以下操作:

Route::group(array('domain' => 'mydomain.com'), function () {
    /* routes here */
    Route::get('/', 'YouController@index');
});

Route::group(array('domain' => 'mydomain2.com'), function () {
    /* routes here */
    Route::get('/', 'YouController@index');
});
Run Code Online (Sandbox Code Playgroud)

您必须将 mydomain.com 和 mydomain2.com 更改为您想要的域,否则您必须将未授权替换为有效视图,这是未列出域时将显示的内容,如果您愿意,您也可以执行 o 服务器什么都不显示。