index.htmlをURLから非表示にする方法【.htaccessにコピペ!】

index.htmlをURLから非表示にする方法【.htaccessにコピペ!】

こんにちは、ゆうや(@yuyaphotograph)です!

この記事では、

  • トップページのURLに「index.html」を表示させたくない
  • 「.htaccess」にコピペするだけで「index.htmlをURLから非表示にできる」コードが知りたい

という方のお悩みを解決します!

ちなみに今回紹介するコードはぼくが実際の案件で使用したものとなります。

この記事の内容が躓いている方の手助けになれば幸いです。

前提知識

WordPressで構築したWebサイトでトップページのURLの後にindex.htmlが表示されることはないですが、例えば。

サブディレクトリをきって「/ドメイン/lp/index.html」のようなURLにする場合に今回のコードが役に立ちますね。

つまり、index.htmlをURLから非表示にして、「/ドメイン/lp」という形式で表示させるわけです。

*正確に言うと「URLから非表示」ではないのですが、分かりやすいのでこの表現を使用しています

URLからindex.htmlを非表示にする方法

本題です。

こちらのコードを「.htaccess」に追記しましょう。

.htaccess
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://ドメイン/$1 [R=301,L]

*ポイントは301リダイレクトです

「ドメイン」と書かれている箇所はご自身の環境に合わせてよしなに変更してくださいまし。

例えばドメインが「sample.com」だった場合は以下のように設定しましょう。

.htaccess
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://sample.com/$1 [R=301,L]

SSL化されたものを使用している場合は「http」を「https」に変えてくださいまし。

.htaccess
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ https://sample.com/$1 [R=301,L]

おまけ:html拡張子を非表示にする方法

index.htmlだけでなく、html拡張子はすべて非表示にしたい場合は以下のコードを使いましょう。

.htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.html [NC,L]

まとめ

以上、WebサイトのURLから「index.html」を非表示にする方法を紹介しました。

意外と使える場面が多い小技ですのでぜひ、お試しあれ〜