Routing von Domainnamen


Domainnamen-Routing

Sie können Routing-Regeln für Domain-Namen separat festlegen, beispielsweise separate Routing-Regeln für Blog-Subdomains registrieren:

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

Sobald eine Domänennamenroute definiert ist, werden beim Zugriff auf den Domänennamen nur die Routingregeln gelesen, die durch die Domänennamenroute definiert sind.

Andere Routing-Methoden können in Abschlüssen verwendet werden, einschließlich Routengruppierung, aber Domänennamen-Routing kann nicht einbezogen werden

Unterstützt das gleichzeitige Festlegen derselben Routing-Regeln für mehrere Domänennamen:

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

Wenn Sie eine Route hinüber einrichten müssen Alle Domänennamen können wirksam werden. Sie können die Methode crossDomainRule für das Gruppenrouting oder eine bestimmte Route verwenden:

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

Domänennamenbindung

An den Controller binden Klasse

// blog子域名绑定控制器
Route::domain('blog', '@blog');

An Namespace gebunden

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

An Klasse gebunden

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

Pandemic Domain Name Deployment

kann domänenübergreifende Bereitstellungsregeln unterstützen Dann zum Beispiel:

// 绑定泛二级域名域名到book应用
Route::domain('*', 'book');

Der folgende URL-Zugriff greift direkt auf die Buchanwendung

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

zu und der aktuelle Pandomain-Wert kann direkt über Request::panDomain() abgerufen werden.

unterstützt die Bereitstellung von Domänennamen auf dritter Ebene, zum Beispiel:

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

unterstützt auch die direkte Übergabe des Werts des Domänennamens als zusätzlichen Parameter an

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

über Request:: param( 'name') Ruft den Wert des aktuellen Pan-Domain-Namens ab

Unterstützt derzeit nur die Bereitstellung von Pan-Domain-Namen für Domänennamen der zweiten Ebene und Domänennamen der dritten Ebene.

An das Response-Objekt binden

Sie können einen Domänennamen direkt an das Response-Objekt binden, zum Beispiel:

// 绑定域名到Response对象
Route::domain('test', response()->code(404));

Wenn das Der Domänenname muss Routing-Regeln und andere definieren Um Bindungsvorgänge durchzuführen, können Sie Bindungsvorgänge in Abschlüssen ausführen:

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

definiert eine neue/:id-Routingregel unter dem Blog-Domänennamen, die auf die Indexanwendung verweist, während andere Routen gebunden sind Blog-Anwendung.

Übergeben Sie zusätzliche Parameter

Sie können zusätzliche versteckte Parameter nach der Domänennamenbindung oder Routing-Definition übergeben, zum Beispiel:

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

Das obige Domänennamen-Routing übergibt einheitlich den Parameter app_id, und der Wert dieses Parameters kann über die param-Methode der Request-Klasse abgerufen werden.

Sie können nach dem Binden des Domainnamens auch direkt zusätzliche Parameter übergeben

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

Routing-Parameter

Domainnamenroute Da es sich auch um eine Routing-Gruppe handelt, können Sie öffentliche Routing-Parameter auf die gleiche Weise wie Routing-Gruppen definieren, zum Beispiel:

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