サイトアイコン WEBデザインMATOME

.htaccessで「/about/slug/ → /about/slug.html」にリダイレクトする方法

Webサイトを運営していると、ディレクトリ形式(/about/slug/)でアクセスされた場合に、
実際のHTMLファイル(/about/slug.html)へリダイレクトしたい場面があります。
特に静的サイトを管理している場合や、SEO的にURLを正規化したい場合には重要な設定です。

この記事では、Apacheの.htaccessを使って /about/ ディレクトリ配下の
URLをシンプルに301リダイレクトする方法を紹介します。

想定するケース

このとき、ユーザーが /about/profile/ にアクセスしても、
自動的に /about/profile.html へリダイレクトされるようにします。

.htaccessの設置場所

実際のコード例

# /about/.htaccess
RewriteEngine On
Options -MultiViews

# 既存のファイルやディレクトリがあればそのまま表示
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule . - [L]

# /about/slug/ → /about/slug.html に301リダイレクト
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([^/]+)/?$ $1.html [R=301,L]

コード解説

実際の動作例

確認方法

設定を保存したら、シークレットモードや別ブラウザでアクセスしてみましょう。
キャッシュが残っているとリダイレクトが確認できないことがあります。

ターミナルから curl コマンドで確認するとより確実です。

curl -I http://sample.com/about/profile/

結果のレスポンスヘッダーに

HTTP/1.1 301 Moved Permanently
Location: http://sample.com/about/profile.html

と出れば成功です。

まとめ

これで、ユーザーも検索エンジンも一貫したURLに誘導でき、SEO的にも安心です。

モバイルバージョンを終了