2024.11.22
Webサイト運営において、URLが変更になったり、ページを移動する必要がある場合に、訪問者や検索エンジンを新しいページに自動で案内できるようにする「リダイレクト」は重要な技術です。
このリダイレクトを、.htaccessファイルを使って設定する方法を解説します。
.htaccessファイルとは?
.htaccess(エイチティーアクセス)は、Apacheと呼ばれるWebサーバーソフトウェアで使われる設定ファイルです。サーバーのルートフォルダ(公開ディレクトリ)にこのファイルを置くことで、アクセス制限やリダイレクトの設定が簡単にできます。
このファイルは設定ミスがあるとサイト全体に影響が出る可能性があるため、編集の際は慎重に進めましょう。
リダイレクトとは?
リダイレクトとは、訪問者があるURLにアクセスしたときに、自動的に別のURLに転送される設定のことです。例えば、旧URLから新URLへリダイレクトすることで、ユーザーが404エラー(ページが見つかりません)に遭遇しないようにしたり、SEO効果を維持したりするのに役立ちます。
主なリダイレクトの種類
301リダイレクト(恒久的なリダイレクト)
恒久的にページが移動した場合に使用。
検索エンジンも新しいURLをインデックスするため、SEO上も効果的です。
302リダイレクト(一時的なリダイレクト)
一時的なリダイレクトで、ページを元のURLに戻す予定がある場合に使用。
検索エンジンは旧URLを保持し、新しいURLには反映されません。
リダイレクトの基本コード
ここでは、代表的なリダイレクトのコード例を紹介します。
301リダイレクト(旧URLから新URLに恒久的に転送)
旧URLを新URLに恒久的にリダイレクトする設定です。たとえば、https://example.com/old-pageをhttps://example.com/new-pageにリダイレクトする場合、以下のコードを.htaccessに追加します。
Redirect 301 /old-page https://example.com/new-page
302リダイレクト(旧URLから新URLに一時的に転送)
同様に、一時的なリダイレクトをしたい場合は、次のように設定します。
Redirect 302 /old-page https://example.com/new-page
全体のドメインを別ドメインにリダイレクトする
もし、サイト全体を別のドメインに移動したい場合は、次のコードを使用します。
RewriteEngine On
RewriteRule ^(.*)$ https://newdomain.com/$1 [R=301,L]
これにより、https://olddomain.com/page1にアクセスした場合もhttps://newdomain.com/page1にリダイレクトされます。
リダイレクトの応用例
特定のディレクトリだけをリダイレクトする
特定のフォルダ内のページすべてを新しいURLにリダイレクトしたい場合に使います。
RedirectMatch 301 ^/old-directory/(.*)$ https://example.com/new-directory/$1
HTTPからHTTPSへのリダイレクト
サイト全体をHTTPSにリダイレクトして、セキュリティを高めたい場合に使います。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
wwwなしに統一する場合
URLに含まれるwwwを省略し、https://example.comのように統一したい場合に使用します。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
index.html非表示に統一する場合
https://example.com/index.htmlをhttps://example.comにリダイレクトさせる設定です。
RewriteEngine On
RewriteCond %{THE_REQUEST} /index\.html [NC]
RewriteRule ^(.*)index\.html$ /$1 [R=301,L]
また、以下のコードを.htaccessに記載することで、HTTP→HTTPSリダイレクト、wwwなしに統一、index.html非表示に統一を一度に設定できます。
RewriteEngine On
# HTTPをHTTPSにリダイレクト
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# wwwありをwwwなしに統一
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
# index.html非表示に統一
RewriteCond %{THE_REQUEST} /index\.html [NC]
RewriteRule ^(.*)index\.html$ /$1 [R=301,L]
.htaccessファイル編集時の注意点
1.バックアップを取る
.htaccessファイルを編集する前に、必ずバックアップを取っておきましょう。
2.コードの順序に注意
.htaccessは上から順にコードを読み込むため、リダイレクトの順番によっては正しく動作しないことがあります。複数のリダイレクトを設定する場合は、順序に注意してください。
3.リダイレクトが反映されない場合
.htaccessの変更がすぐに反映されないこともあります。その場合は、ブラウザのキャッシュをクリアするか、別のブラウザで動作を確認してみてください。
最後に
.htaccessファイルを活用したリダイレクト設定は、Webサイト運営で頻繁に役立つ便利な機能です。特に301リダイレクトは、SEO効果を維持しつつ訪問者にスムーズに新しいページを案内できるため、URL変更時に必ず設定したいところです。
初心者の方も、このガイドを参考にまずは基本的なリダイレクトから試してみてください。
https://dis.ne.jp/blog/coding/4642.html/trackback