Edited at

laravelでトレイリングスラッシュを有効にする方法

More than 3 years have passed since last update.

Laravelはデフォルトだとトレイリングスラッシュ(URL末尾のスラッシュ)を消しちゃいます。

でもサービスによっては常にスラッシュを付与したい時ありますよね。

そんな時は.htaccessを下記のように編集しましょう。

※コメント解説付き


public/.htaccess(変更前。laravelデフォルト)

# Redirect Trailing Slashes...     【解説】URLに/があれば削除してリダイレクト ←ココが問題

RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...    【解説】ファイルやディレクトリが存在しなければindex.phpへ
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]


 ↓ トレイリングスラッシュを有効にしたい


public/.htaccess(変更後)

# ファイルやディレクトリが存在すれば表示 【解説】スラッシュ付与後だと判定できないので最初にチェック

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

# add Trailing Slash       【解説】URLの末尾に/がなければ付与してリダイレクト ←これで解決
RewriteRule ^(.+[^/])$ /$1/ [R=301,L]

# Handle Front Controller...
RewriteRule ^ index.php [L]


これで常に末尾にスラッシュが付きます。

あとはよしなに。