.htaccessで「/about/slug/ → /about/slug.html」にリダイレクトする方法
Webサイトを運営していると、ディレクトリ形式(/about/slug/)でアクセスされた場合に、
実際のHTMLファイル(/about/slug.html)へリダイレクトしたい場面があります。
特に静的サイトを管理している場合や、SEO的にURLを正規化したい場合には重要な設定です。
この記事では、Apacheの.htaccessを使って /about/ ディレクトリ配下の
URLをシンプルに301リダイレクトする方法を紹介します。
想定するケース
- アクセスURL:
http://sample.com/about/profile/ - 実際のファイル:
http://sample.com/about/profile.html
このとき、ユーザーが /about/profile/ にアクセスしても、
自動的に /about/profile.html へリダイレクトされるようにします。
.htaccessの設置場所
- サーバーの
/about/ディレクトリ内 に.htaccessファイルを設置してください。 - ファイル名は必ず
.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]
コード解説
RewriteEngine On
Apacheのリライトルールを有効化します。Options -MultiViews
ApacheのMultiViews機能をOFFにする設定です。これを入れないと、リダイレクトではなく直接slug.htmlが表示されてしまうことがあります。RewriteCond %{REQUEST_FILENAME} -d [OR]RewriteCond %{REQUEST_FILENAME} -f
もしアクセスされたパスが「実在するフォルダ」または「実在するファイル」なら、そのまま処理を止めるようにしています。これで意図しないリダイレクトを防げます。RewriteCond %{REQUEST_FILENAME}\.html -f.htmlファイルが存在する場合のみ、次のルールを実行します。RewriteRule ^([^/]+)/?$ $1.html [R=301,L]/slug/または/slugというリクエストを/slug.htmlへ301リダイレクトします。
実際の動作例
http://sample.com/about/profile/
→http://sample.com/about/profile.htmlhttp://sample.com/about/company/
→http://sample.com/about/company.htmlhttp://sample.com/about/info/
→http://sample.com/about/info.html
確認方法
設定を保存したら、シークレットモードや別ブラウザでアクセスしてみましょう。
キャッシュが残っているとリダイレクトが確認できないことがあります。
ターミナルから curl コマンドで確認するとより確実です。
curl -I http://sample.com/about/profile/
結果のレスポンスヘッダーに
HTTP/1.1 301 Moved Permanently
Location: http://sample.com/about/profile.html
と出れば成功です。
まとめ
.htaccessを/about/フォルダに設置するOptions -MultiViewsで不要な自動解決を無効化する.htmlファイルが存在する場合のみ/slug/ → /slug.htmlに301リダイレクト
これで、ユーザーも検索エンジンも一貫したURLに誘導でき、SEO的にも安心です。


.htaccessで特定のディレクトリにアクセスしたときに別URLへリダイレクトさせる方法【実例つき】
8月 5, 2025PHPのhttp_response_code(200);とは?
2月 18, 2025Apacheでキャッシュを無効化する方法
9月 15, 2024