web-dev-qa-db-ja.com

Laravelのルーティンググループに複数のドメインをグループ化できますか?

私が以下を持っているとしましょう:

Route::group(array('domain' => array('admin.example.com')), function()
{
    ...
});

Route::group(array('domain' => array('app.example.com')), function()
{
    ...
});

Route::group(array('domain' => array('dev.app.example.com')), function()
{
    ...
});

複数のドメインでルーティンググループを共有する方法はありますか?何かのようなもの:

Route::group(array('domain' => array('dev.app.example.com','app.example.com')), function()
{
    ...
});
26
Andy Fleming

Laravelはこれをサポートしていないようです。

なぜこれをすぐに考えなかったのかはわかりませんが、1つの解決策は、別の関数でルートを宣言して両方のルートグループに渡すことです。

Route::group(array('domain' => 'admin.example.com'), function()
{
    ...
});

$appRoutes = function() {
    Route::get('/',function(){
        ...
    }); 
};

Route::group(array('domain' => 'app.example.com'), $appRoutes);
Route::group(array('domain' => 'dev.app.example.com'), $appRoutes);

このソリューションにパフォーマンスに大きな影響があるかどうかはわかりません。

48
DesignerGuy

Laravel 5.1

 
 
Route::pattern('subdomain', '(dev.app|app)');
Route::group(['domain' => '{subdomain}.example.com'], function () {
  ...
});
 
 
Route::pattern('subdomain', '(dev.app|app)');
Route::pattern('domain', '(example.com|example.dev)');
Route::group(['domain' => '{subdomain}.{domain}'], function () {
  ...
});
11

これにも興味があります! 1つのコントローラーアクションのために、ローカル開発+プロダクションサブドメインルートを登録しようとしています。

つまり.

# Local Dev
Route::group(array('domain' => "{subdomain}.app.dev"), function() {
    Route::get('/{id}', 'SomeController@getShow');
});

# Production Server
Route::group(array('domain' => "{subdomain}.app.com"), function() {
    Route::get('/{id}', 'SomeController@getShow');
});

私は試した:

# Failed
Route::group(array('domain' => "{account}.app.{top_level_domain}"), function() {
    Route::get('/{id}', 'SomeController@getShow');
});

しかし、それは失敗しました。

大きな問題ではありません。DesignerGuyが言及したように、両方のルートに関数を渡すことができますが、それらをグループ化できれば、よりエレガントになります:)

4
Dylan Baskind

チェックイン laravel docs 、メインドメインがmyappの場合、本番環境ではmyapp.com、ローカル環境ではmyapp.devを使用してみてください*

Route::group(array('domain' => '{subdomain}.myapp.*'), 
function()
{
    ...
});
3
Bradley

ドメイン名も渡すことができます:

Route::pattern('domain', '(domain1.develop|domain2.develop|domain.com)');
Route::group(['domain' => '{domain}'], function() {
    Route::get('/', function($domain) {
        return 'This is the page for ' . $domain . '!';
    });
});

コントローラーが呼び出されるドメイン名を知る必要がある場合に備えて。 Laravel 5.6。

1
Marty

現在はできません。私は同じ「問題」を抱えていました。私の修正は、foreachを使用してサブドメインを循環し、ルートを登録することです。

1
Rob Gordijn

laravel document によると、laravel 5.4+の場合、次のように使用できます。

Route::domain('{account}.myapp.com')->group(function () {
    Route::get('user/{id}', function ($account, $id) {
        //
    });
});
1
Winner1

このリンクを参照してください。 http://laravel.com/docs/routing#sub-domain-routing

Route::group(array('domain' => '{subdomain}.example.com'), function()
{
    ...
});

またはこのパッケージを使用します。

https://github.com/jasonlewis/enhanced-router

このようにグループルーティングのどこを設定するかを支援します。

Route::group(array('domain' => '{maindomain}'), function()
{
    ...
})->where('maindomain', '.+\.example\.com$');
0
EThaizone Jo