ドメイン名のルーティング


ドメイン名のルーティング

ドメイン名のルーティング ルールを個別に設定できます。たとえば、ブログのサブドメインに個別のルーティング ルールを登録します。

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

)。