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]);