私が以下を持っているとしましょう:
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()
{
...
});
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);
このソリューションにパフォーマンスに大きな影響があるかどうかはわかりません。
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 () {
...
});
これにも興味があります! 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が言及したように、両方のルートに関数を渡すことができますが、それらをグループ化できれば、よりエレガントになります:)
チェックイン laravel docs 、メインドメインがmyappの場合、本番環境ではmyapp.com
、ローカル環境ではmyapp.dev
を使用してみてください*
Route::group(array('domain' => '{subdomain}.myapp.*'),
function()
{
...
});
ドメイン名も渡すことができます:
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。
現在はできません。私は同じ「問題」を抱えていました。私の修正は、foreachを使用してサブドメインを循環し、ルートを登録することです。
laravel document によると、laravel 5.4+の場合、次のように使用できます。
Route::domain('{account}.myapp.com')->group(function () {
Route::get('user/{id}', function ($account, $id) {
//
});
});
このリンクを参照してください。 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$');