LaravelでURL末尾のスラッシュを付ける方法。

Laravelでは、URL末尾にスラッシュを付けてアクセスをすると、スラッシュなしURLへリダイレクトされます。

これを「スラッシュなしでアクセスした場合は、スラッシュ付きにリダイレクトする」ように変更する方法を紹介します。

 

このスラッシュはトレイリングスラッシュ(trailing slash)と呼ばれます。

この振る舞いは、.htaccessによって制御されていますので、public/.htaccessを書き換えます。

.htaccess

Before

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

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

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

#Redirect Trailing Slashesの部分で、

  • 指定されたディレクトリが存在せず(既存ディレクトリへのアクセスではなく)
  • 末尾がスラッシュで終わっている

場合に末尾のスラッシュを削除しています。

この部分をコメントアウトして、次のように追記します。

After

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

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

    # Add Trailing Slash If Not A File...
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} (.+[^/])$
    RewriteRule ^ %1/ [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

# Add Trailing Slashの部分が追記した部分です。

  • 指定されたファイルが存在せず(既存ファイルへのアクセスではなく)
  • 末尾が/以外で終わっている

場合には、末尾にスラッシュをつけて301リダイレクトをします。

 

トレイリングスラッシュの有無を統一するためのリダイレクトに、301リダイレクトを使うことはGoogleの中の人が勧めている方法です。

 

以上、LaravelでURL末尾のスラッシュを付ける方法。でした。

 

 

なお、現在Amazonではaudible(オーディブル)の無料体験キャンペーンが行われており、「花火」などの小説や、英語教材などから好きなものを選んで聴くと、プライム会員なら最大3000ポイント、会員でない方でも最大1500ポイントがもらえます。

12/12までですので、Amazonを利用している方は一度確認しておくと良いですよ↓

Amazon Musicの3ヶ月99円 期間限定キャンペーンもはじまっています↓

 

 こんな記事も読まれています

コメントを残す