Maison  >  Article  >  cadre php  >  Explication détaillée du domaine de routage Laravel pour résoudre le problème des noms de domaine multiples

Explication détaillée du domaine de routage Laravel pour résoudre le problème des noms de domaine multiples

藏色散人
藏色散人avant
2021-03-30 17:15:053796parcourir

La colonne tutorielle suivante de laravel vous présentera la recherche de routage de domaine Laravel pour résoudre le problème des noms de domaine multiples. J'espère qu'elle sera utile aux amis dans le besoin. !

Explication détaillée du domaine de routage Laravel pour résoudre le problème des noms de domaine multiples

Recherche de routage Laravel sur domaine pour résoudre le problème de plusieurs noms de domaine

Préparation du matériel

  • Un nettoyage laravel
  • Deux fichiers de configuration Nginx, la configuration principale est la suivante :

    server_name *.amor_laravel_test_1.amor;
    root /var/www/amor_laravel_test/public;
    index index.php index.html index.htm;
    rrree

Diviser le nom de domaine en paramètres

server_name *.amor_laravel_test.amor;
root /var/www/amor_laravel_test/public;
index index.php index.html index.htm;

Remarque : Si le compte n'est pas corrigé, vous pouvez configurer le nom du serveur Nginx comme générique : *.example.com

À propos de plusieurs noms de domaine

Configurez deux noms de domaine différents comme suit :

  1. server_name *.amor_laravel_test.amor;
  2. server_name *.amor_laravel_test_1.amor;

Comment faire correspondre Laravel à différents noms de domaine ?

Méthode 1 : Utiliser le domaine distinction directement dans route/web.php

Route::domain('{account}.{webname}.{suffix}')->group(function () {

    Route::get('user/{id}', function ($account, $webname, $suffix, $id) {
        // 可以在请求中接收到被分割的参数,可能的使用场景:在单独路由中需要根据不同的域名处理不同的需求

        dd($account, $webname, $suffix, $id);

    });
});

Méthode 2 : Distinguer

  • en définissant la méthode RouteServiceProvider Add :
Route::domain('{account}.amor_laravel_test.amor')->group(function () {

    Route::get('user/{id}', function ($account, $id) {
        //

        dd($account, $id);

    });
});

Route::domain('{account}.amor_laravel_test_1.amor')->group(function () {

    Route::get('user/{id}', function ($account, $id) {
        //

        dd(111, $account, $id);

    });
});
  • Register
    protected function mapSelfRoutes()
    {
        Route::domain('{account}.amor_laravel_test_1.amor')
            ->middleware('web')
            ->namespace($this->namespace)
            ->group(base_path('routes/self.php'));
    }
  • Ajouter un fichier de routage
    public function map()
    {
        $this->mapApiRoutes();

        $this->mapWebRoutes();

        $this->mapSelfRoutes();

        //
    }

Remarque : doit définir tous les domaines. Si seul self est défini, alors sous le même chemin de requête, ceux sans domaine seront mis en correspondance en premier.

[Recommandé : Les cinq derniers didacticiels vidéo Laravel]

Instructions sur l'action dans le routage sous plusieurs noms de domaine

Tout d'abord, nous devons connaître cette action détermine à quel contrôleur la route sera liée, il y a un autre point à noter L'attribut Action dans la route détermine l'URL générée par la fonction auxiliaire route().
Supposons que notre configuration de routage soit la suivante :

  • Premier itinéraire

    Route::get('/user', function ($account) {
        dd($account);
    });
  • Deuxième itinéraire

    Route::get('/', function () {
        if(\Illuminate\Support\Facades\Auth::check()) {
            return redirect('index');
        } else {
            return redirect('login');
        }
    });

sont exactement les mêmes, ils appellent tous la route de connexion intégrée et le contrôleur est le même. Regardons le formulaire de formulaire dans la fonction auxiliaire du modèle

Route::get('/', function () {
    if(\Illuminate\Support\Facades\Auth::check()) {
        return redirect('index');
    } else {
        return redirect('login');
    }
});

route(), qui le fera. lisez la liste de noms de route. Connexion chargée, si nous chargeons ces deux fichiers de route en même temps dans RouteServiceProvider,

<form method="POST" class="form-horizontal" action="{{ route(&#39;login&#39;) }}">
---
</form>

Ensuite : ne pas distinguer l'espace de noms ou le contrôleur fera que le chemin absolu généré par la fonction auxiliaire de route sera le chemin absolu généré par la fonction auxiliaire de route. domaine de la dernière route, donc si notre logique est cohérente et que nous voulons simplement distinguer différents sites à travers différents noms de domaine grâce à de simples modifications, nous devons porter des jugements et charger à la demande :

public function map()
{
    $this->mapApiRoutes();

    $this->mapWebRoutes();

    $this->mapSelfRoutes();

    //
}

Résumé :

1. La deuxième méthode est recommandée pour distinguer les noms de domaine. L'avantage est que le routage est séparé et que la structure est claire.
2. Le domaine peut non seulement être utilisé pour distinguer les noms de sous-domaines, mais peut également être utilisé pour. fractionnement des paramètres, différents noms de domaine, etc.
3. Faites attention à Laravel, j'espère que vous pourrez le faire avec soin, en faire l'expérience et en être conscient
4. Maintenant que les noms de domaine ont été distingués, vous pouvez liez-les à différents contrôleurs ou liez différents modèles Application flexible

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer