.htaccess すべて自サイトのひとつのページにリダイレクトさせる

Apache
スポンサーリンク

状況

サイト移転などを行い、古いサイトにアクセスされた際、どのページにアクセスされても、

「このサイトは新しいサイトに移転しました。移転先のURLは…5秒後にジャンプします」

みたいなページにリダイレクトさせたい場合など

 

やり方 – 1 非推奨

みたくする。

4行目の

RewriteRule ^「移転されました」ページ.html$ – [L]

の記述が無いと、

mod_rewrite 502 リダイレクトが繰り返し行われています

エラーになる。

 

やり方 – 2 推奨

どのページにアクセスしても一時的にメンテナンスページに飛ばす。

503にしとかないとSEO的にマズイ。

動作としては、8行目で503にリダイレクトさせると、1行目で定義したmaintenance.htmlに飛ぶ。

メンテナンス中に動作確認したい場合は、7行目のコメントを外して、「172.18.0.3」の部分をメンテナンスページに飛ばしたくない人のIPアドレスに変える。(IPアドレス縛りでアクセス制限)

 

やり方 − 2 の、注意点1

1行目、5行目、6行目のファイルパスを間違えるとServer Errorになる。

 

やり方 − 2 の、注意点2

maintenance.html の中で、画像ファイルを使うために「/maintenance/asset/img/logo.jpg」を指定している。

だから6行目で画像ファイルも許可しているんだけど、

maintenance.html の中で、画像ファイルのPathを「asset/img/logo.jpg」などと相対Pathで指定すると、画像が表示されない。絶対Pathで指定すること。

 

500番台のHTTPステータスって、サーバーエラーって意味じゃないっけ!?(後日追記)

久々にこの記事をチェックして、推奨コードを見てみたんだが、503のHTTPステータスってサーバーエラーな意味では?それでSEO的にほんとにいいのか?

と思って調べた。

結論としては、503のママで問題ない。

ChatGPT3.5先生のご回答:

HTTPステータスコード: メンテナンス中のページを表示する際に、HTTPステータスコード503 (Service Unavailable) を返すことが推奨されます。これにより、検索エンジンは一時的なメンテナンスを認識し、インデックスから削除しないようになります。

Google AI 先生のご回答:

503エラーは、サーバー側のエラーを示すHTTPステータスコードです。503エラーは、Webサーバーがメンテナンス中や、Webサーバーへの同時アクセス数の制限を超えた場合に発生します。

503は正式にメンテナンスを示すコードなんですな。
今日も一つ賢くなりましたな。

参考にしたサイト

Webサイトのメンテナンス中画面を出す正しい作法と.htaccessの書き方

 

コメント