도메인 이름 라우팅


도메인 이름 라우팅

도메인 이름에 대한 라우팅 규칙을 별도로 설정할 수 있습니다. 예를 들어 블로그 하위 도메인에 대해 별도의 라우팅 규칙을 등록할 수 있습니다.

Route::domain('blog', function () {
    // 动态注册域名的路由规则
    Route::rule('new/:id', 'news/read');
    Route::rule(':user', 'user/info');
});

도메인 이름 라우팅이 정의되면 도메인 이름에 대한 액세스는 읽기만 가능합니다. 도메인 이름 라우팅 정의 라우팅 규칙.

경로 그룹화를 포함하여 다른 라우팅 방법을 클로저에 사용할 수 있지만 도메인 이름 라우팅은 포함될 수 없습니다.

동시에 여러 도메인 이름에 대해 동일한 라우팅 규칙 설정을 지원합니다.

Route::domain(['blog', 'admin'], function () {
    // 动态注册域名的路由规则
    Route::rule('new/:id', 'news/read');
    Route::rule(':user', 'user/info');
});

모든 도메인 이름에 걸쳐 라우팅하려면 그룹 라우팅 또는 특정 경로에 crossDomainRule 방법을 사용할 수 있습니다. 네임스페이스

Route::group( function () {
    // 动态注册域名的路由规则
    Route::rule('new/:id', 'news/read');
    Route::rule(':user', 'user/info');
})->crossDomainRule();
클래스
// blog子域名绑定控制器
Route::domain('blog', '@blog');

에 바인딩된 네임스페이스

// blog子域名绑定命名空间
Route::domain('blog', ':\app\blog\controller');

팬 도메인 이름 배포


는 팬 도메인 이름 배포 규칙을 지원할 수 있습니다. 예:

// blog子域名绑定到类
Route::domain('blog', '\app\blog\controller\Article');

다음 URL 액세스는 책 애플리케이션

// 绑定泛二级域名域名到book应用
Route::domain('*', 'book');
에 직접 액세스하고 현재 도메인 이름은 Request::panDomain() 일반 도메인 이름 값을 통해 직접 얻을 수 있습니다.
3단계 팬 도메인 이름 배포를 지원합니다. 예:

http://hello.thinkphp.cn
http://quickstart.thinkphp.cn

팬 도메인 이름 값을 추가 매개변수로 직접 전달하는 것도 지원합니다.

// 绑定泛三级域名到user应用
Route::domain('*.user', 'user');

현재 팬 도메인 이름 값을 가져올 수 있습니다. Request::param('name')

을 통해 현재 2단계 및 3단계 도메인 이름 배포만 지원됩니다.

응답 개체에 바인딩

도메인 이름을 응답 개체에 직접 바인딩할 수 있습니다. 예:

// 绑定泛三级域名到user应用
Route::domain('*.user', 'user?name=*');

도메인 이름이 동시에 라우팅 규칙을 정의해야 하는 경우 다른 개체에 대한 바인딩 작업을 수행합니다. 상황에서는 클로저를 사용할 수 있습니다. 바인딩 작업은 내부에서 수행됩니다. 예:

// 绑定域名到Response对象
Route::domain('test', response()->code(404));
는 블로그 도메인 이름 아래에 new/:id 라우팅 규칙을 정의하여 인덱스 애플리케이션을 가리키는 반면 다른 경로는 블로그 애플리케이션에 바인딩됩니다.

추가 매개변수 전달

도메인 이름 바인딩 또는 라우팅 정의 후에 추가 숨겨진 매개변수를 전달할 수 있습니다. 예:

Route::domain('blog', function () {
    // 动态注册域名的路由规则
    Route::rule('new/:id', 'index/news/read');
})->bind('blog');

위의 도메인 이름 라우팅은 app_id 매개변수에 균일하게 전달되며 이 매개변수의 값 클래스의 param 메소드에서 Request Obtained를 통해 전달될 수 있습니다.

도메인 이름 바인딩 후 추가 매개변수를 직접 전달할 수도 있습니다.

Route::domain('blog', function () {
    // 动态注册域名的路由规则
    Route::rule('new/:id', 'news/read');
    Route::rule(':user', 'user/info');
})->append(['app_id'=>1]);

라우팅 매개변수

도메인 이름 라우팅 자체도 라우팅 그룹이므로 라우팅 그룹과 같은 공개 라우팅 매개변수를 정의할 수 있습니다. 예:

Route::domain('blog', 'blog')
	->append(['app_id'=>1]);