Pour optimiser l'optimisation des moteurs de recherche (SEO), je devais rediriger toutes les demandes contenant des lettres majuscules vers leurs équivalents minuscules la semaine dernière.
Exemple:
源 URL | 目标 URL |
---|---|
/location/Atlanta | /location/atlanta |
/docs/Laravel-Middleware | /docs/laravel-middleware |
En même temps, cette solution ne doit modifier aucun paramètre de requête:
源 URL | 目标 URL |
---|---|
/locations/United-States?search=Georgia | /location/united-states?search=Georgia |
Il s'avère que nous n'avons besoin que d'écrire quelques lignes de code dans le middleware de Laravel pour y parvenir! Tout d'abord, nous obtenons le chemin de la demande et vérifions s'il est le même en minuscules. S'il n'est pas pareil, nous pouvons utiliser la méthode url()->query()
pour remonter la chaîne de requête vers la version minuscule du chemin et la rediriger sur le chemin en minuscules de façon permanente.
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Response; class RedirectUppercase { /** * 处理传入请求。 * * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next */ public function handle(Request $request, Closure $next): Response { $path = $request->path(); if (($lower = strtolower($path)) !== $path) { $url = url()->to($lower)->appendQuery($request->query()); // 使用更简洁的链式调用 return redirect($url, 301); } return $next($request); } }
Pour enregistrer le middleware dans l'application Laravel 11, je l'ai joint au groupe bootstrap/app.php
middleware dans le fichier web
.
<?php return Application::configure(basePath: dirname(__DIR__)) ->withRouting( // ... ) ->withMiddleware(function (Middleware $middleware) { $middleware->appendToGroup('web', \App\Http\Middleware\RedirectUppercase::class); });
Remarque: vous devrez peut-être exclure ce middleware à partir des itinéraires à l'aide d'une URL signée ou d'autres cas d'utilisation sensibles aux cas.
Je suis sûr que cela peut être fait avec Nginx ou Apache, mais c'est de loin la solution la plus simple, et cela fonctionne pour tous les environnements de votre application. Je n'ai pas à me rappeler d'apporter des modifications sur le nouveau serveur.
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!