.httaccess

【.htaccess】1行で解決!URLの最後のスラッシュを消す方法

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/+$ $1 [R=301,L]

 

URLの最後のスラッシュ(/)を自動的に消す方法を説明します。

コードはズバリコレ↓

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

.httaccessに記載します。

ポイントは3行目。
1、2行目はすでに設置してあれば、最後の行だけ追加すればOK。

それぞれの意味

RewriteEngine On

URLをリライトしますよという意味で、Offにすればリライト機能が全てオフになります。
大文字でも小文字でも、大文字小文字が混ざってもOK。

RewriteBase /

リライトするする時のベースアドレスをルートにする設定。
よほどトリッキーなことをしない限り、設定しておくこと。
次のRewriteRuleは、この記載がないとうまく動きません。

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

RewriteRule
リライトする命令文

^(.*)/+$ $1
なんかの文字列【(.*)】で始まって【^】、スラッシュで終わったら【$】スラッシュを抜いたなんかの文字列【(.*)】→【$1】でリダイレクトしてね。

[R=301]
転送は恒久的にね。

[L]
条件はここで終わり。
今回の場合は実は必要ないが、下記のような「RewriteCond」を使う場合は必須。

ディレクトリ内のindexが表示されない場合

ディレクトリ内のindex.htmlやindex.phpをディレクトリ指定だけで実行したい場合は、上記の方法ではエラーになりますので、以下のようにします。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/+$ $1 [R=301,L]

変更箇所は3行目。

ディレクトリじゃないときだけ最後のスラッシュを削除します。

\ 注 目 /

CodeCamp
▲自宅で学べるプログラミング学習

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です