読者です 読者をやめる 読者になる 読者になる

「構造」の再発見記

インタラクティヴとかに興味がある京都の学生

【忘備録】メンテナンス画面のリダイレクトを行う時

リダイレクト html javascript apache

目的

メンテナンス画面へのリダイレクト方法を知る

目次

  1. .htaccessによるリダイレクト
    • ページ単位
    • ディレクトリ単位
    • サイト全体
    • 特定のファイルをリダイレクトがら外す
    • メンテナンス画面へリダイレクトしてみる
  2. .htaccessが使えない場合

1..htaccessによるリダイレクト

ファイル単位

RewriteEngine On
RewriteBase /
RewriteRule 転送元のファイル名 \.html http://転送元のURL [R=301, L]

ディレクトリ単位

RewriteEngine On
RewriteBase /
RewriteRule ^ディレクトリ名/(.*)$ http://転送先URL [R=301, L]


サイト全体

RewriteEngine On
RewirteBase /
RewriteRule (.*)$ リダイレクト先のURL$1 [R=301,L]


特定のファイルをリダイレクトから外す

RewriteEngine On
RewriteBase /
RewriteCond 


メンテナンス画面へリダイレクトする
サイト改修中は「Service Unavaliable」503エラーを表示させるのが常だが、できることなら専用のmaintenance.htmlを作成し

  • サイトロゴ
  • メンテナンス理由
  • 所用時間


等を表示させた方がユーザーフレンドリー。503エラーをmaintenance.htmlに設定し、また画像とcss拡張子をリダイレクトから除外。
外部からのアクセスはmaintenance.htmlを表示させ、自分のPCからのアクセスはリダイレクトを無効化。

ErrorDocument 503 /maintenance.html

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_URI} !=/maintenance.html
  RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpg|jpeg|css)$ [NC]
  RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx  #your IP address
  RewriteRule ^.*$ - [R=503,L]
</IfModule>

<IfModule mod_headers.c>
  Header set Retry-After "Sun, 14 Jun 2009 6:00:00 GMT"
</IfModule>

HTMLタグでリダイレクト

htmlファイルのhead要素内に以下のコードを追加

<meta http-equiv="refresh" content="秒;URL=リダイレクト先のURL">

 秒数の指定ができるのが特徴。検索エンジンの評価的にメンテナンスやサイト引越しでの使用はおすすめしない。同じサイト内のリダイレクトに使うといいかと。

  • 特徴
    • 秒数の指定が可能
    • SEO的にはバツ(同じサイト内のリダイレクトならば有用)

Javascriptでリダイレクト

 htmlファイル内head要素内に以下を追加

<script type="text/javascript">
   location.href = "リダイレクト先のURL";
</script>
  • 特徴
    • javascriptがオフになっていたら使えない
    • 秒数の指定が可能
    • 検索エンジンの評価はhtmlによるリダイレクトと同じ