Routage de nom de domaine


Routage des noms de domaine

Vous pouvez définir des règles de routage pour les noms de domaine séparément, par exemple, enregistrer des règles de routage distinctes pour les sous-domaines du blog :

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

Une fois le routage du nom de domaine défini, l'accès au nom de domaine ne fera que lire les règles de routage de la définition du routage des noms de domaine.

D'autres méthodes de routage peuvent être utilisées dans les fermetures, y compris le regroupement de routes, mais le routage des noms de domaine ne peut pas être inclus.

Prend en charge la définition des mêmes règles de routage pour plusieurs noms de domaine en même temps :

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

Si vous devez définir un. route à travers tous les noms de domaine, vous pouvez Pour prendre effet, vous pouvez utiliser la méthode crossDomainRule pour le routage de groupe ou un certain itinéraire :

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

Liaison du nom de domaine

Lié à la classe du contrôleur

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

Lié à l'espace de noms

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

Binded to Class

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

Déploiement de nom de domaine pan

peut prendre en charge les règles de déploiement de nom de domaine pan, par exemple :

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

L'accès URL suivant accédera directement à l'application de livre

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

et l'actuel peut être obtenu directement via Request::panDomain() Valeur du nom de domaine générique.

Prend en charge le déploiement de noms pan-domaine de troisième niveau, par exemple :

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

Il prend également en charge la transmission directe de la valeur du nom pan-domaine en tant que paramètre supplémentaire

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

La valeur du nom pan-domaine actuel peut être obtenue via Request::param('name')

Actuellement, seuls les déploiements de noms de domaine de deuxième et troisième niveaux sont pris en charge.

Lier à l'objet Response

Vous pouvez directement lier un nom de domaine à l'objet Response, par exemple :

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

Si le nom de domaine doit définir des règles de routage en même temps et effectuer des opérations de liaison pour d'autres Dans certaines situations, vous pouvez utiliser la fermeture Les opérations de liaison sont effectuées à l'intérieur, par exemple :

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

définit une règle de routage new/:id sous le nom de domaine du blog, pointant vers l'application d'index, tandis que d'autres routes sont liées à l'application de blog.

Transmettre des paramètres supplémentaires

Vous pouvez transmettre des paramètres cachés supplémentaires après la liaison du nom de domaine ou la définition du routage, par exemple :

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

Le routage du nom de domaine ci-dessus passe uniformément dans le paramètre app_id et la valeur de ce paramètre peut être transmis via Request Obtenu à partir de la méthode param de la classe.

Vous pouvez également transmettre directement des paramètres supplémentaires après la liaison du nom de domaine

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

Paramètres de routage

Le routage du nom de domaine lui-même est également un groupe de routage, vous pouvez donc définir des paramètres de routage publics tels que des groupes de routage, par exemple :

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