本文へ移動

Trailing Slash ミドルウェア ​

このミドルウェアは、GET リクエストの URL の末尾スラッシュを処理します。

コンテンツが見つからない場合、appendTrailingSlash は末尾スラッシュを追加した URL にリダイレクトします。trimTrailingSlash は末尾スラッシュを削除します。

インポート ​

ts
import { Hono } from 'hono'
import {
  appendTrailingSlash,
  trimTrailingSlash,
} from 'hono/trailing-slash'

使い方 ​

/about/me への GET リクエストを /about/me/ にリダイレクトする例です。

ts
import { Hono } from 'hono'
import { appendTrailingSlash } from 'hono/trailing-slash'

const app = new Hono({ strict: true })

app.use(appendTrailingSlash())
app.get('/about/me/', (c) => c.text('With Trailing Slash'))

/about/me/ への GET リクエストを /about/me にリダイレクトする例です。

ts
import { Hono } from 'hono'
import { trimTrailingSlash } from 'hono/trailing-slash'

const app = new Hono({ strict: true })

app.use(trimTrailingSlash())
app.get('/about/me', (c) => c.text('Without Trailing Slash'))

オプション ​

optional alwaysRedirect: boolean ​

デフォルトでは、末尾スラッシュのミドルウェアはレスポンスのステータスが 404 の場合だけリダイレクトします。alwaysRedirect を true にすると、ハンドラーの実行前にリダイレクトします。デフォルト動作が機能しないワイルドカードルート(*)で役立ちます。

ts
const app = new Hono()

app.use(trimTrailingSlash({ alwaysRedirect: true }))
app.get('/my-path/*', (c) => c.text('Wildcard route'))

このオプションは、trimTrailingSlash と appendTrailingSlash の両方で利用できます。

optional skip: (path: string) => boolean ​

リクエストパスに基づき、リダイレクトを省略するか判断する関数です。true を返すと省略します。拡張子を持つパスなど、特定のパスをリダイレクトから除外したい場合に役立ちます。

ts
app.use(
  appendTrailingSlash({
    skip: (path) => /\.\w+$/.test(path),
  })
)

このオプションは、trimTrailingSlash と appendTrailingSlash の両方で利用できます。

注意 ​

リクエストメソッドが GET で、レスポンスのステータスが 404 の場合に有効になります。

MIT ライセンスで公開されています。