> PHP 프레임워크 > Laravel > 여러 도메인 이름 문제를 해결하기 위한 Laravel 라우팅 도메인에 대한 자세한 설명

여러 도메인 이름 문제를 해결하기 위한 Laravel 라우팅 도메인에 대한 자세한 설명

藏色散人
풀어 주다: 2021-03-31 09:00:49
앞으로
3988명이 탐색했습니다.

다음 튜토리얼 칼럼인 laravel에서는 여러 도메인 이름 문제를 해결하기 위한 Laravel 라우팅 연구 도메인을 소개하겠습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

여러 도메인 이름 문제를 해결하기 위한 Laravel 라우팅 도메인에 대한 자세한 설명

여러 도메인 이름 문제를 해결하기 위한 도메인에 대한 Laravel 라우팅 연구

재료 준비

  • 깨끗한 laravel
  • 두 개의 Nginx 구성 파일, 주요 구성은 다음과 같습니다.

    server_name *.amor_laravel_test_1.amor;
    root /var/www/amor_laravel_test/public;
    index index.php index.html index.htm;
    로그인 후 복사
    server_name *.amor_laravel_test.amor;
    root /var/www/amor_laravel_test/public;
    index index.php index.html index.htm;
    로그인 후 복사

Split 도메인 이름을 매개변수로

Route::domain('{account}.{webname}.{suffix}')->group(function () {

    Route::get('user/{id}', function ($account, $webname, $suffix, $id) {
        // 可以在请求中接收到被分割的参数,可能的使用场景:在单独路由中需要根据不同的域名处理不同的需求

        dd($account, $webname, $suffix, $id);

    });
});
로그인 후 복사

참고: 계정이 고정되지 않은 경우 Nginx 서버 이름을 일반으로 구성할 수 있습니다: *.example.com*.example.com

关于多域名

配置两个不同的域名如下:

  1. server_name *.amor_laravel_test.amor;
  2. server_name *.amor_laravel_test_1.amor;
  3. 여러 도메인 이름 정보

구성 다음과 같은 두 개의 서로 다른 도메인 이름:

    server_name *.amor_laravel_test.amor;

    server_name *.amor_laravel_test_1.amor;

  • Laravel을 일치시키는 방법 도메인 이름이 다른가요?
방법 1: Route/web.php에서 직접 도메인 구분 사용
    Route::domain('{account}.amor_laravel_test.amor')->group(function () {
    
        Route::get('user/{id}', function ($account, $id) {
            //
    
            dd($account, $id);
    
        });
    });
    
    Route::domain('{account}.amor_laravel_test_1.amor')->group(function () {
    
        Route::get('user/{id}', function ($account, $id) {
            //
    
            dd(111, $account, $id);
    
        });
    });
    로그인 후 복사
  • 방법 2: RouteServiceProvider를 설정하여 구별
    • 방법 추가:
        protected function mapSelfRoutes()
        {
            Route::domain('{account}.amor_laravel_test_1.amor')
                ->middleware('web')
                ->namespace($this->namespace)
                ->group(base_path('routes/self.php'));
        }
    로그인 후 복사

    Register

        public function map()
        {
            $this->mapApiRoutes();
    
            $this->mapWebRoutes();
    
            $this->mapSelfRoutes();
    
            //
        }
    로그인 후 복사

    라우트 파일 추가

    Route::get('/user', function ($account) {
        dd($account);
    });
    로그인 후 복사

    참고:

    필수 모든 도메인이 설정됩니다. 자체만 설정된 경우 동일한 요청 경로에서 설정되지 않은 도메인이 먼저 일치됩니다.


    [추천:

    최신 5개 Laravel 비디오 튜토리얼
      ]
    • 여러 도메인 이름으로 라우팅할 때 Action에 대한 지침

    • 우선 Action이 경로가 바인딩될 컨트롤러를 결정한다는 점을 알아야 합니다. 한 가지 더 주의할 점은 경로의 Action 속성이 보조 함수인 Route()에 의해 생성된 URL을 결정한다는 것입니다.
    • 라우팅 구성이 다음과 같다고 가정해 보겠습니다.

    첫 번째 경로

    Route::get('/', function () {
        if(\Illuminate\Support\Facades\Auth::check()) {
            return redirect('index');
        } else {
            return redirect('login');
        }
    });
    로그인 후 복사
    로그인 후 복사

    두 번째 경로

    Route::get('/', function () {
        if(\Illuminate\Support\Facades\Auth::check()) {
            return redirect('index');
        } else {
            return redirect('login');
        }
    });
    로그인 후 복사
    로그인 후 복사

    는 정확히 동일합니다. 둘 다 내장된 로그인 경로를 호출하고 컨트롤러도 동일합니다. 템플릿을 살펴보겠습니다.

    <form method="POST" class="form-horizontal" action="{{ route(&#39;login&#39;) }}">
    ---
    </form>
    로그인 후 복사

    route() 보조 함수는 경로 이름 목록에 로드된 로그인을 읽습니다. RouteServiceProvider에 이 두 경로 파일을 동시에 로드하면
    public function map()
    {
        $this->mapApiRoutes();
    
        $this->mapWebRoutes();
    
        $this->mapSelfRoutes();
    
        //
    }
    로그인 후 복사

    네임스페이스가 구분되지 않습니다. 또는 구별 없음 컨트롤러는 경로 보조 기능에 의해 생성된 절대 경로를 마지막 경로 도메인으로 설정합니다. 따라서 논리가 일관되고 간단한 수정을 통해 다른 도메인 이름을 통해 다른 사이트를 구별하려는 경우에는 다음을 수행해야 합니다. 판단 및 로드 온 디맨드:
    public function map()
    {
        if(request()->getHost() == env('ONLINEDOWN_DOMAIN')) {
            $this->mapApiRoutes();
        }
    
        if(request()->getHost() == env('PCSOFT_DOMAIN')) {
            $this->mapPcsoftRoutes();
        }
    
        $this->mapWebRoutes();
        //
    }
    로그인 후 복사

    요약:
    1. 도메인 이름을 구별하는 두 번째 방법을 권장합니다. 라우팅이 분리되고 구조가 명확하다는 점입니다. 🎜2. 도메인 이름이지만 매개변수 분할, 다른 도메인 이름 구별 등에 사용될 수도 있습니다. 🎜 3. Laravel의 라우팅 일치 순서에 주의하세요. 모두가 신중하게 수행하고 경험하고 알아두시기 바랍니다🎜4. 이제 도메인 이름이 구별되었으므로 이를 다른 컨트롤러에 바인딩하거나 다른 모델에 바인딩할 수 있습니다. 모두가 유연하게 적용할 수 있습니다🎜🎜🎜🎜

    위 내용은 여러 도메인 이름 문제를 해결하기 위한 Laravel 라우팅 도메인에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    관련 라벨:
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿