Rumah >pembangunan bahagian belakang >tutorial php >Cara mengalihkan url huruf besar ke huruf kecil dengan middleware laravel

Cara mengalihkan url huruf besar ke huruf kecil dengan middleware laravel

百草
百草asal
2025-03-07 01:22:11491semak imbas

How to Redirect Uppercase URLs to Lowercase with Laravel Middleware

Untuk mengoptimumkan pengoptimuman enjin carian (SEO), saya perlu mengalihkan semua permintaan yang mengandungi huruf besar kepada kesetaraan huruf kecil mereka minggu lepas.

Contoh:

源 URL 目标 URL
/location/Atlanta /location/atlanta
/docs/Laravel-Middleware /docs/laravel-middleware
Pada masa yang sama, penyelesaian ini tidak boleh mengubah mana -mana parameter pertanyaan:

Ternyata kita hanya perlu menulis beberapa baris kod di middleware Laravel untuk mencapainya! Pertama, kami mendapat jalan dari permintaan dan periksa sama ada ia sama dengan huruf kecil. Jika tidak sama, kita boleh menggunakan kaedah

源 URL 目标 URL
/locations/United-States?search=Georgia /location/united-states?search=Georgia
untuk menambahkan rentetan pertanyaan kembali ke versi huruf kecil dan mengalihkannya ke laluan huruf kecil secara kekal.

url()->query() Untuk mendaftarkan middleware dalam aplikasi Laravel 11, saya melampirkannya ke kumpulan middleware

dalam fail
<?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);
    }
}
.

bootstrap/app.php web

Nota: Anda mungkin perlu mengecualikan middleware ini dari laluan menggunakan URL yang ditandatangani atau kes penggunaan sensitif kes yang lain.
<?php

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        // ...
    )
    ->withMiddleware(function (Middleware $middleware) {
        $middleware->appendToGroup('web', \App\Http\Middleware\RedirectUppercase::class);
    });

Saya pasti ia boleh dilakukan dengan Nginx atau Apache, tetapi ini adalah penyelesaian yang paling mudah, dan ia berfungsi untuk semua persekitaran aplikasi anda. Saya tidak perlu ingat untuk membuat sebarang perubahan pada pelayan baru.

Atas ialah kandungan terperinci Cara mengalihkan url huruf besar ke huruf kecil dengan middleware laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn