Heim > Backend-Entwicklung > PHP-Tutorial > Wie man Großbuchstaben mit Laravel Middleware in Kleinbuchstaben umleiten

Wie man Großbuchstaben mit Laravel Middleware in Kleinbuchstaben umleiten

百草
Freigeben: 2025-03-07 01:22:11
Original
489 Leute haben es durchsucht

How to Redirect Uppercase URLs to Lowercase with Laravel Middleware

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);
    }
}
Nach dem Login kopieren

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);
    });
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage