основной домен laravel 5 с www, а также распознает субдомены

0

У меня есть домен как example.dev, и я хочу перенаправить его на www.example.dev в laravel 5. В локальной среде я установил виртуальный хост как example.dev, а также установил его как файл www.example.dev.

Мой файл.htaccess на laravel 5 выглядит так.

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
RewriteBase "/"

и мой файл маршрутов в laravel выглядит так.

Route::group(array('domain' => 'example.dev'), function()
{
Route::get('/', function() {
    return "I'm root!";
});
});

Route::group(array('domain' => '{sub}.example.dev'), function()
{
Route::get('/', function($sub) {

    return "I'm ".$sub." subdomain";
});
});

теперь, если я нахожусь на example.dev, я получаю вывод как

Я корень

и если я нахожусь в something.example.dev, я получаю

Я что-то субдомен

и если я нахожусь на www.example.dev, я получаю это...

Я - субдомен www

что я могу думать о том, чтобы определить другую пользовательскую группу домена с www, но это не так хорошо, я верю или не пользуюсь хорошей практикой. Я попытался с некоторыми изменениями в моем.htaccess файле, как следует после RewriteEngine On

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]

и теперь, если я нахожу example.dev, он перенаправляется на www.example.dev, но все же выход

Я - субдомен www

то я меняю мою первую группу маршрутизации с example.dev на www.example.dev, и она сработала! но мне просто нужно знать, правильно ли это сделать или нет? или использование групп для нескольких поддоменов является единственным способом? и знаете ли вы какой-либо простой и лучший способ проверить субдомены из базы данных через контроллер, поэтому я проверю его, что субдомен существует, а затем служит с ним, иначе в противном случае не будет найдена ошибка. я знаю, где-то это можно сделать с фильтром и использовать до этого, но точно не знаю!

помощь будет действительно оценена. благодаря :)

  • 0
    Почему бы просто не проверить наличие if($sub == "www") в закрытии группы маршрутов?
  • 0
    @ Джо, так что вы имеете в виду во второй группе, где я проверяю любой поддомен, я проверяю как «если ($ sub ==« www »)», а затем обслуживаю мой домашний контент (я root!)? тогда я должен удалить свою первую группу?
Показать ещё 3 комментария
Теги:
.htaccess
mod-rewrite
laravel-5

1 ответ

0
Route::group(array('domain' => '{sub}.example.dev'), function($sub)
{
    if($sub == 'www' || $sub == ''){
        Route::get('/',function(){
            return "I'm root!";
        });
    }
    else{
        Route::get('/', function($sub) {
            return "I'm ".$sub." subdomain";
        });
    }
});
  • 0
    в приведенном выше коде вы забыли передать $sub качестве аргумента в функцию группы маршрутов, чтобы она работала в операторе if. я пробовал с этим кодом, но все еще вывод для www.example.dev я поддомен www

Ещё вопросы

Сообщество Overcoder
Наверх
Меню