技術(非IT系)

302リダイレクトの設定方法は?使い方と実装手順も!(htaccess・Apache・Nginx・PHP・JavaScript・メタリフレッシュなど)

当サイトでは記事内に広告を含みます

302リダイレクトの概念を理解したとしても、「実際にどうやって実装するのか」という方法を知らなければ現場では活用できません。

サーバーの種類やプログラミング言語によって実装方法が異なるため、代表的な方法を一通り押さえておくことが重要です。

本記事では、302リダイレクトの具体的な設定方法を、.htaccess・Apache・Nginx・PHP・JavaScript・メタリフレッシュの観点から詳しく解説していきます。

WebエンジニアからWebサイト運営者まで、実際のコード例を参考にすぐに実装できる内容をお届けします。

それぞれの実装方法の特徴・メリット・使い分けのポイントも合わせて解説しますので、環境に合った最適な実装方法を選んでいただければ幸いです。

302リダイレクトの実装の基本:サーバーサイドとクライアントサイドの違い

それではまず、302リダイレクトの実装における基本的な考え方とサーバーサイド・クライアントサイドの違いについて解説していきます。

302リダイレクトの実装方法は大きく「サーバーサイド」と「クライアントサイド」の2種類に分けられます。

実装方法 種類 SEOへの適合性 実装例
サーバーサイド 推奨 高い .htaccess・Apache・Nginx・PHP・Ruby・Python
クライアントサイド 非推奨(補助的) 低い JavaScript・メタリフレッシュ

SEO観点では、サーバーサイドでのリダイレクト実装が強く推奨されます。

クライアントサイドのJavaScriptリダイレクトやメタリフレッシュは、検索エンジンのクローラーがJavaScriptを実行しない場合にリダイレクトが認識されないリスクがあります。

JavaScript・メタリフレッシュはあくまで補助的な手段として使い、本来のリダイレクトはサーバーサイドで行うことが原則です。

Googleは公式ドキュメントでも「HTTPヘッダーを使ったサーバーサイドリダイレクトを最も推奨する」と明示しています。

.htaccessとApacheを使った302リダイレクトの設定方法

続いては、.htaccessとApacheを使った302リダイレクトの設定方法について確認していきます。

Apacheサーバーでは.htaccessファイルを使って302リダイレクトを設定するのが最も一般的な方法です。

【.htaccessを使った302リダイレクトの設定例】

# 特定URLへの302リダイレクト(シンプルな方法)

Redirect 302 /old-page.html https://example.com/new-page.html

# または「temp」キーワードを使う方法

Redirect temp /old-page.html https://example.com/new-page.html

# mod_rewriteを使った302リダイレクト

RewriteEngine On

RewriteRule ^old-page$ /new-page [R=302,L]

# 特定のディレクトリ全体を302リダイレクト

RewriteRule ^old-dir/(.*)$ /new-dir/$1 [R=302,L]

# メンテナンスページへの一時リダイレクト(自分のIPのみ除外)

RewriteEngine On

RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000$

RewriteRule ^(.*)$ /maintenance.html [R=302,L]

「Redirect 302」または「Redirect temp」はシンプルな設定に向いており、「RewriteRule」はより複雑な条件や正規表現が必要な場合に使います。

mod_rewriteの「[R=302,L]」フラグでR=302が302リダイレクトを指定し、Lがこのルールで処理を終了することを示しています。

Nginxを使った302リダイレクトの設定方法

続いては、Nginxを使った302リダイレクトの設定方法について確認していきます。

NginxではApacheの.htaccessに相当する設定をnginx.confまたはサイトの設定ファイルに記述します。

【Nginxでの302リダイレクト設定例】

# 特定URLへの302リダイレクト

server {

listen 80;

server_name example.com;

# returnディレクティブを使う方法(推奨・シンプル)

location /old-page {

return 302 https://example.com/new-page;

}

# rewrite ディレクティブを使う方法

rewrite ^/old-page$ /new-page redirect;

# メンテナンスページへの302リダイレクト

location / {

return 302 /maintenance.html;

}

}

Nginxでは「return 302 URL」という書き方が最もシンプルで推奨される方法です。

「rewrite」ディレクティブの「redirect」フラグも302リダイレクトを意味しますが、「return」の方が処理が効率的であるためNginxでは「return」の使用が推奨されています。

設定変更後は「nginx -t」でテストし、問題がなければ「nginx -s reload」で設定を反映します。

PHPとJavaScriptを使った302リダイレクトの実装方法

続いては、PHPとJavaScriptを使った302リダイレクトの実装方法について確認していきます。

【PHPを使った302リダイレクト】

<?php

// PHPでの302リダイレクト(header関数を使う)

header(“Location: https://example.com/new-page.html”, true, 302);

exit(); // header()の後は必ずexit()を呼ぶ

// 条件に応じてリダイレクトを切り替える例

if (!isset($_SESSION[‘user’])) {

header(“Location: /login.php”, true, 302); // ログインページへ一時転送

exit();

}

?>

【JavaScriptを使ったリダイレクト(補助的な手段として)】

// window.locationを使う方法

window.location.href = “https://example.com/new-page.html”;

// または

window.location.replace(“https://example.com/new-page.html”);

【メタリフレッシュを使った方法(補助的な手段として)】

<meta http-equiv=”refresh” content=”0; url=https://example.com/new-page.html”>

PHPの「header()」関数を使ったリダイレクトはサーバーサイドで処理されるため、SEO観点では有効なリダイレクト方法です。

PHPでheader()を使う際は必ずその後にexit()を呼ぶことが重要です。

exit()を呼ばないと後続のPHPコードが実行されてしまい、予期しない動作を引き起こすことがあります。

JavaScriptリダイレクトはクライアントサイドでの処理となるため、JavaScriptが無効な環境やクローラーが実行できない場合に機能しないリスクがある補助的な手段です。

まとめ

302リダイレクトの実装はサーバーサイド(.htaccess・Apache・Nginx・PHP)での設定がSEO観点から最も推奨されます。

Apacheでは「Redirect 302」または「RewriteRule [R=302,L]」、Nginxでは「return 302 URL」がそれぞれ推奨される書き方です。

PHPでは「header(“Location: URL”, true, 302)」の後に必ずexit()を呼ぶことが重要です。

JavaScriptやメタリフレッシュはSEOリスクを伴うため、補助的な手段として位置づけることが大切です。

適切なサーバーサイド実装で302リダイレクトを正しく活用し、Webサイトの品質を保ちましょう。