ドメイン名のルーティング
ドメイン名のルーティング
ドメイン名のルーティング ルールを個別に設定できます。たとえば、ブログのサブドメインに個別のルーティング ルールを登録します。
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');
汎ドメイン名展開
汎ドメイン名展開ルールをサポートできます。例:
// 绑定泛二级域名域名到book应用 Route::domain('*', 'book');
次の URL アクセスは、書籍アプリケーションに直接アクセスします
http://hello.thinkphp.cn http://quickstart.thinkphp.cn
そして、Request::panDomain() を通じて現在のパンドメイン名の値を直接取得できます。
第 3 レベルの汎ドメイン名の展開をサポートします。例:
// 绑定泛三级域名到user应用 Route::domain('*.user', 'user');
は、追加パラメーター
// 绑定泛三级域名到user应用 Route::domain('*.user', 'user?name=*');
として汎ドメイン名の値を直接渡すこともサポートします。 Request::param( 'name') 現在の汎ドメイン名の値を取得します
現在、第 2 レベル ドメイン名と第 3 レベル ドメイン名の汎ドメイン名の展開のみをサポートしています。
Response オブジェクトへのバインド
ドメイン名を Response オブジェクトに直接バインドできます。たとえば、次のようになります。ドメイン名は、ルーティング ルールを定義し、その他の状況でバインディング操作を実行する必要があります。クロージャでバインディング操作を実行できます。例:
// 绑定域名到Response对象 Route::domain('test', response()->code(404));
は、ブログ ドメイン名の下に新しい/:id ルーティング ルールを定義し、以下を指します他のルートはブログ アプリケーションにバインドされていますが、インデックス アプリケーションにバインドされています。
追加パラメータを渡すドメイン名のバインドまたはルーティング定義の後に、追加の非表示パラメータを渡すことができます。例:
Route::domain('blog', function () { // 动态注册域名的路由规则 Route::rule('new/:id', 'index/news/read'); })->bind('blog');
上記のドメイン名ルーティングでは、一律に app_id パラメーターが渡され、このパラメーターの値は、Request クラスの param メソッドを通じて取得できます。
ドメイン名をバインドした後、追加のパラメータを直接渡すこともできます。
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]);
)。