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

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

藏色散人
藏色散人앞으로
2021-03-30 17:15:053796검색

다음 튜토리얼 칼럼인 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제