Um die Suchmaschinenoptimierung (SEO) zu optimieren, musste ich letzte Woche alle Anfragen mit Großbuchstaben in ihre Kleinbuchstaben -Äquivalente umleiten.
Beispiel:
源 URL | 目标 URL |
---|---|
/location/Atlanta | /location/atlanta |
/docs/Laravel-Middleware | /docs/laravel-middleware |
Gleichzeitig sollte diese Lösung keine Abfrageparameter ändern:
源 URL | 目标 URL |
---|---|
/locations/United-States?search=Georgia | /location/united-states?search=Georgia |
Es stellt sich heraus, dass wir nur ein paar Codezeilen in die Laravel Middleware schreiben müssen, um dies zu erreichen! Zunächst erhalten wir den Pfad aus der Anfrage und prüfen, ob er in Kleinbuchstaben gleich ist. Wenn es nicht dasselbe ist, können wir die url()->query()
-Methode verwenden, um die Abfragezeichenfolge wieder an die Kleinbuchstabenversion des Pfades anzuhängen und sie dauerhaft auf den Kleinbuchstaben umzuleiten.
<?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); } }
Um die Middleware in der Laravel 11 -Anwendung zu registrieren, habe ich sie der bootstrap/app.php
Middleware -Gruppe in der Datei web
angeschlossen.
<?php return Application::configure(basePath: dirname(__DIR__)) ->withRouting( // ... ) ->withMiddleware(function (Middleware $middleware) { $middleware->appendToGroup('web', \App\Http\Middleware\RedirectUppercase::class); });
Hinweis: Möglicherweise müssen Sie diese Middleware mit einer signierten URL oder anderen Fall-sensitiven Anwendungsfällen von Routen ausschließen.
Ich bin mir sicher, dass es mit Nginx oder Apache erfolgen kann, aber dies ist bei weitem die einfachste Lösung, und es funktioniert für alle Umgebungen Ihrer Anwendung. Ich muss mich nicht daran erinnern, Änderungen am neuen Server vorzunehmen.
Das obige ist der detaillierte Inhalt vonWie man Großbuchstaben mit Laravel Middleware in Kleinbuchstaben umleiten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!