【忘備録】メンテナンス画面のリダイレクトを行う時
目的
メンテナンス画面へのリダイレクト方法を知る
目次
- .htaccessによるリダイレクト
- ページ単位
- ディレクトリ単位
- サイト全体
- 特定のファイルをリダイレクトがら外す
- メンテナンス画面へリダイレクトしてみる
- .htaccessが使えない場合
- htmlのmetaタグ
- javascript
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によるリダイレクトと同じ