トレイリングスラッシュ

末尾の / を自動的に追加または削除するミドルウェア。

使用シナリオ

トレイリングスラッシュミドルウェアは以下のような場面で特に有用です:

  • URLの正規化:すべてのURLが一貫した形式(末尾スラッシュの統一的な追加または削除)に従うようにし、SEOの向上や重複コンテンツの問題を防ぎます。

  • ルーティング処理の簡素化:スラッシュありとなしの場合にそれぞれルーティング処理ロジックを書く必要がなく、ミドルウェアが自動的にこの変換を処理します。

  • 互換性:一部のクライアントはURLの末尾にスラッシュを自動的に追加または削除する場合があり、このミドルウェアはリクエストが正しくルーティングされることを保証します。

  • リダイレクト管理:スラッシュ付きURLをスラッシュなしURLへ(またはその逆へ)自動的にリダイレクトするように設定でき、ユーザーエクスペリエンスを向上させます。

  • ルーティング衝突の回避:多くのWebフレームワークでは、/path/path/ は異なるルートとして扱われる可能性があり、このミドルウェアで統一処理できます。

サンプルコード

main.rs
Cargo.toml
trailing-slash/src/main.rs
use salvo::prelude::*;
use salvo::trailing_slash::add_slash;

#[handler]
async fn hello() -> &'static str {
    "Hello"
}

#[tokio::main]
async fn main() {
    tracing_subscriber::fmt().init();
    let router = Router::with_hoop(add_slash())
        .push(Router::with_path("hello").get(hello))
        .push(Router::with_path("hello.world").get(hello));
    let acceptor = TcpListener::new("0.0.0.0:5800").bind().await;
    Server::new(acceptor).serve(router).await;
}
このページ内