【Laravel】URLの末尾にトレイリングスラッシュ付与【POST時の405エラーも対策】

.htaccessを編集

  • public/.htaccess
# Redirect Trailing Slashes If Not A Folder...
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteCond %{REQUEST_URI} (.+)/$
# RewriteRule ^ %1 [L,R=301]

RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.[^/\.]+$
RewriteRule .* %{REQUEST_URI}/ [R=301,L]
  1. 元々あった、#Redirect Trailing Slashes If Not A Folder…
    下3行をコメントアウト
  2. その下にスラッシュをつける設定3行を追記

しかしこれだと登録・削除などのPOST処理も全てリダイレクトされてしまうので、

405 エラー(Method Not Allowed)

が発生して使い物にならず...

.htaccessにGETのみ対象とする条件を追加する

  • public/.htaccessに、GETメソッドのみを対象とする条件を付け加える
# Redirect Trailing Slashes If Not A Folder...
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteCond %{REQUEST_URI} (.+)/$
# RewriteRule ^ %1 [L,R=301]

RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.[^/\.]+$
RewriteCond %{REQUEST_METHOD}  =GET # 追記
RewriteRule .* %{REQUEST_URI}/ [R=301,L]

RewriteCond %{REQUEST_METHOD} =GET

上記を追加することで、GETアクセスの場合のみトレイリングスラッシュがつくようになりPOST処理で405エラーが発生しない

\ 案件のご依頼・ご相談はこちらから /