Ruta utilizando un prefijo o un dominio

Estoy trabajando en una plataforma que permite a los usuarios ejecutar su propio sitio en una subcarpeta del dominio principal del sitio web o asignar un dominio personalizado para su sitio.

Cuando se usa un dominio personalizado, la estructura de URL para cada ruta es ligeramente diferente, ya que tiene el prefijo con el nombre de usuario, pero cuando se usa un dominio personalizado, este prefijo no se usa.

¿Hay una manera inteligente de lograr esto en mi ruta :: grupo para manejar ambos tipos de solicitud en una ruta y utilizar con éxito el enrutamiento inverso para producir la URL adecuada en función de los parámetros que se le pasan.

A continuación se muestra un ejemplo del uso del prefijo

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

Y aquí hay un ejemplo del uso de un dominio personalizado

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

Idealmente, me gustaría estar en una posición en la que pudiera usar

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

y ser devuelto

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

o llamar a la misma ruta con diferentes parámetros

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

y ser devuelto

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta