Rotear usando um prefixo ou um domínio

Estou trabalhando em uma plataforma que permite aos usuários executar seu próprio site em uma subpasta do domínio principal do site ou mapear um domínio personalizado para o site.

Ao usar um domínio personalizado, a estrutura de URL para cada rota é um pouco diferente, pois é prefixada com o nome de usuário, mas ao usar um domínio personalizado, esse prefixo não é usado.

Existe uma maneira inteligente de conseguir isso no meu Route :: group para lidar com os dois tipos de solicitação em uma rota e usar com êxito o roteamento reverso para produzir a URL apropriada com base nos parâmetros passados para ela.

Abaixo está um exemplo de como usar o prefixo

Route::group(array( 'prefix' => 'sites/{username}'), function() {
    Route::get('/photos/{album_id}.html', array('uses' => 'Media\PhotosController@album_view', 'as' => 'photo_album'));
});

E aqui está um exemplo de uso de um domínio personalizado

Route::group(array('domain' => '{users_domain}'), function() {
    Route::get('/photos/{album_id}.html', array('uses' => 'Media\PhotosController@album_view', 'as' => 'photo_album'));
});

Idealmente, gostaria de estar em uma posição em que pudesse usar

route('photo_album', ['username' => 'johnboy', 'album_id' => 123] )

e ser devolvido

http://www.mainwebsitedomain.com/sites/johnboy/photos/123.html

ou chame a mesma rota com parâmetros diferentes

route('photo_album', ['users_domain' => 'www.johnboy.com', 'album_id' => 123] )

e ser devolvido

http://www.johnboy.com/photos/123.html

questionAnswers(1)

yourAnswerToTheQuestion