正しい作法にのっとったメンテナンス画面を出すための.htaccessサンプル

2009/6/16 火曜日 Posted in サーバ, 記事紹介・リンク | 1 Comment »

本日はケータイに限定された話題ではありませんが、Web担当者ForumさんにApacheで正しい作法でメンテナンス画面を表示するための方法が説明された良記事がありましたのでご紹介したいと思います。   → Web担当者Forum メンテナンス中画面を出す正しい作法と.htaccessの書き方 [forum.impressrd.jp]   Webサイトを運営している場合、コンテンツやプログラム更新作業などでメンテナンス表示を出したいことは多いと思います。 この記事では、利用者にも検索エンジンにも適切にメンテナンスを通知するためのやり方が解説されています。   ポイントとなるのは次の2点です。 .htaccess(もしくはhttpd.conf)とmod_rewirteを使ってどのページにアクセスされてもメンテ画面が出るようにする 検索エンジンには503を返し、メンテ中画面をインデックスされないようにする   具体的な例としては次のようなサンプルが掲載されています。 ErrorDocument 503 /maintenance.html <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html [NC] RewriteCond %{REMOTE_ADDR} !=192.168.0.4 RewriteCond %{REMOTE_ADDR} !=192.168.0.5 RewriteRule ^.*$ - [R=503,L] </IfModule> <IfModule mod_headers.c> Header set ... Read more..

ケータイで「mod_rewrite + セッション」を使う際の注意点

2008/6/6 金曜日 Posted in DoCoMo, サーバ | 4 Comments »

ここ最近は大きなニュースが多く、ニュース記事の紹介ばかりでしたので、ひさしぶりに技術メモ的なものを書きたいと思います。   先日mod_rewriteを使っていて、セッション絡みで少しつまづいた件をご紹介します。 実はPHPで動いているページを、「*.html」として静的コンテンツに見せる、というものを作ろうとしていました。 .htaccessの内容としては次の通りです。 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^([0-9A-Za-z~_\-\.]+)\.html$ /viewer.php?p=$1 [L] </IfModule>   ブラウザで正常に動作することを確認し、その後ドコモの実機でテストしたのですが、何度試してもセッションを引き継いでくれません。 それもそのはず、ドコモ端末はcookieが使えませんので、URLにセッションIDを埋めこんで引き継いでいく必要があります。 上記のような設定では、mod_rewriteがセッションIDの引数をカットしてしまうのです。   というわけで、ケータイのセッションに対応するための設定は以下のようになります。 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^([0-9A-Za-z~_\-\.]+)\.html$ /viewer.php?p=$1 [QSA,L] </IfModule> [QSA,L]の部分の、QSAフラグがポイントとなります。 リファレンスによると、QSAフラグは次のように説明されています。 このフラグは、置換文字列の中でマッチしたものを書き換えるのではなく、 そこにクエリー文字列部分を追加するように、書き換えエンジンに強制します。書き換えルールを通してクエリー文字列に何かデータを追加したい場合にこのフラグを使います。 ちょっとわかりづらい説明ですが、要はアクセスされたURLについていたクエリー文字列を、そのまま引き継ぐためのフラグです。 これをつけることによって、セッションIDを失うことなくプログラムに渡すことができます。 次のような書き方でも、同じように動くようです。 viewer.php?p=$1&%{QUERY_STRING} [L]   なお、ケータイのセッションに関する詳しい説明は、こちらをご覧ください。 → PHPでケータイからセッションを使う場合の設定方法   関連: ケータイキャリア毎に振り分けを行うには(mod_rewrite編) PHPでケータイからセッションを使う場合の設定方法 Read more..