Laravel Мультитенант считает www part субдоменом - PullRequest
0 голосов
/ 12 июля 2020

Я создаю мультитенантную систему в laravel, и каждый поддомен сохраняется в базе данных. Когда поддомен посещен, он проверяется из базы данных, существует он или нет, если он не существует, вызывается прерывание (403). Ниже приведен способ:

Routes / web. php

Route::group(array('domain' => '{subdomain}.example.com', 'middleware' => ['Subdomain']), function () {

    Route::get('/', 'IndexController@index');
}

Middleware / Subdomain. php

public function handle($request, Closure $next)
{
    if(Subdomains::where('subdomain', $request->subdomain)->count()==0){
        return abort(403);
    }else{
        return $next($request);
    }
}

Но когда я посещаю www.example.com, затем www is также считается поддоменом и проверяется из базы данных, так как он не существует в базе данных и для него также вызывается прерывание (403). Короче говоря, мой веб-сайт не посещается с URL-адресом www.example.com.

Есть ли способ дифференцировать www form другие поддомены в этой Laravel многопользовательской системе или каким-либо способом справиться с этим вещь?

1 Ответ

0 голосов
/ 12 июля 2020

Просто используйте оператор if, чтобы проверить, является ли запрошенный субдомен www*1003*

public function handle($request, Closure $next)
{
  if($request->subdomain != 'www') {
    if(Subdomains::where('subdomain', $request->subdomain)->count()==0){
        return abort(403);
    }else{
        return $next($request);
    }
  }
}

Также в вашем .htaccess удалите www from имя домена

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...