Laravel/Настройка хоста для Multi-TLD

В общем, я написал это около 5 раз, до сих пор не знаю, как правильно спросить, так что вот...

Мне нужны два домена, скажем, example.net и example.info, которые я зарегистрировал. Я хочу, чтобы они указывали на одно приложение, которое я создаю, а затем, надеюсь, использовать Laravel для маршрутизации двух разных доменов на собственные страницы... вот что я пробовал и с какими проблемами столкнулся...

** Переадресация домена №1 **

Загрузил мое приложение на example.net и перенаправил домен .info в домен .net. А потом попробовал...

Route::group(array('domain' => 'example.info'), function()
{
    Route::get('/', function(){ return 'INFO PAGE!'; });
});

Route::group(array('domain' => 'example.net'), function()
{
    Route::get('/', function(){ return 'NET PAGE!'; });
});

Route::get('/', 'HomeController@index');

Проблемы

  1. Laravel Domain Routing, похоже, не распознает домены без поддоменов, например, «{subdomain}.example.net» будет работать, а «example.net» и «example.info» не будут?

  2. При переадресации домена HTTP_HOST всегда будет показывать .net, а не .info, поэтому нельзя использовать оператор if или switch в файле маршрутов.

Альтернативное решение

Единственное решение, которое я могу придумать, - это использовать настройку общего хостинга моего хоста, чтобы иметь два отдельных сайта, каждый с соответствующими доменами, указывающими на них, и настроить мою IDE для загрузки на оба сайта?

Наверняка есть лучший способ сделать это?

Любая помощь была бы здоровой, и я довольно новичок в этом, поэтому, если бы вы могли сделать это проще, пожалуйста, спасибо ... Джимми


person Jimmy Howe    schedule 13.10.2014    source источник
comment
Это не то, для чего нужен Laravel. Загляните в виртуальные хосты.   -  person    schedule 14.10.2014
comment
Я понимаю, как настроить виртуальные хосты для разработки, я хочу знать, как лучше настроить одно приложение в нескольких доменах?   -  person Jimmy Howe    schedule 14.10.2014
comment
Поместите одно и то же приложение на разные виртуальные хосты, каждый виртуальный хост имеет другой домен..?   -  person    schedule 14.10.2014
comment
Да, но как мне это сделать на живом сервере?   -  person Jimmy Howe    schedule 15.10.2014
comment
Перечитайте мой последний комментарий...   -  person    schedule 15.10.2014


Ответы (3)


Спасибо за ответы, ребята, это то, что я в конечном итоге сделал ... просто поместив маршруты в переменную и передав их группам маршрутов, похоже, это сработало для меня.

$frontendRoutes = function()
{
    Route::get('/', function(){
        return 'Index Page';
    })
};

Route::group(['domain' => 'example.net'], $frontendRoutes);
Route::group(['domain' => 'example.info'], $frontendRoutes);
person Jimmy Howe    schedule 29.03.2015

Кажется, это работает, но маршруты php artisan выглядят немного неправильно.

http://ryantablada.com/post/multi-tld-routing-in-laravel

У меня возникла проблема с тем, что код выбрал последний tld в списке. Это, хотя и не идеально, кажется, лучший ответ, который я нашел до сих пор.

person Barry Pickerall    schedule 06.11.2014

Это может быть сумасшедший хак, но, поскольку я столкнулся с той же проблемой, и я хотел, чтобы два tld указывали на мой сайт, а затем обслуживали другой язык в зависимости от того, с какого tld они исходили, я сделал это решение.

Я создал папку Routes в папке приложения.

Затем я добавил две папки в папку «Маршруты», одну с именем «com» ​​и одну с именем «se».

И в каждую папку я добавлял файлы, которые хотел использовать в зависимости от того, на каком языке. в папке "com" я создал файл с именем pages.php с кодом:

Route::get('/', 'PagesController@index');

Route::get('about', [
    'as' => 'about',
    'uses' => 'PagesController@about'
]);

Затем я добавил файл в папку «se», также названный pages.php, с кодом:

Route::get('/', 'PagesController@index');

Route::get('om-oss', [
    'as' => 'about',
    'uses' => 'PagesController@about'
]);

Затем, вернувшись к route.php, я добавил этот код:

$tld = strrchr ( $_SERVER['SERVER_NAME'], "." );
$tld = substr ( $tld, 1 );

foreach (File::allFiles(__DIR__.'\Routes\/'.$tld) as $partial) 
{
require_once $partial->getPathname();
}

Итак, теперь у меня есть одна папка для каждого tld, не лучшее решение, но оно работает.

person Björn Hjorth    schedule 08.02.2015