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 :
server_name *.amor_laravel_test.amor;
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('login') }}"> --- </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