スキップしてメイン コンテンツに移動

[Apache]mod_rewriteのRewriteCondを設定する

mod_rewriteのRewriteCondで込み入った書き方の情報がなかなか出てこず、手こずったので、サンプルをあげておきます。




RewriteCondとは

RewriteCondは、RewriteRuleでURIを書き換える場合に書き換える条件を記述するものです。
携帯電話のユーザーエージェントでは、DocomoやSoftbankがズバリ出てくるため、mod_rewriteでキャリア毎にウェブページを振り分ける事が容易にできます。

たとえば、IE6で閲覧してきたユーザーは完全に遮断するなど、条件がシビアな場合は、スペースを含んだり、メタ文字が混入していたりするので、エスケープが必要です。
以下は、IE6ユーザーでも特定のユーザーエージェントを持つ場合だけ別のファイルへリダイレクトする場合のRewriteCondです。
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "^Mozilla/4\.0 \(compatible; MSIE 6\.0; Windows NT 5\.1; SV1\)$" [NC]
RewriteCond %{REQUEST_URI} !^/waruikoto\.php$ [NC]
RewriteRule ^.*$ /waruikoto.php [L]

まず、「.」はエスケープする必要があります。
同様に「(」と「)」もエスケープする必要があります。
次に、スペースの対処ですが、エスケープしてみてもうまく動かなかったので、全体をダブルクォーテーションで囲ってみたところ、うまく動きました。

2つ目のRewriteCondがないと無限ループに陥るので、リダイレクト先を「!」で対象から外すのも忘れずに・・・。


コメント

このブログの人気の投稿

[VB.NET]オレオレ証明書でSSL通信するための短絡的な解決法

VB.NETソフトウェアでサーバーと通信することはよくある事だと思いますが、最近はHTTPを使って明けっ広げに刺しに行くよりHTTPSを使って暗号化してこそこそやった方が時代の流れに即した感じですよね(違うか)。 いちいちテスト環境でSSL証明書を用意するのも面倒だということで、セキュリティ的には全くよろしくない方法で迂回できるので紹介します。

wget vs curl - コマンドラインダウンロードツール頂上決戦

「wget」って便利ですよね。 僕はPHPerなので、PHPを使ってcronを回したい時は、今ならCLIモードを利用してバッチを書きますが、以前はそんな事できなかった。PHPでバッチ処理するには、wgetでlocalhostのURLを叩きに行くのが手っ取り早かったんです(もちろん、外からのアクセスへの対策も行いつつ)。 そんなこんなでよく使うwgetですが、先日node.jsをインストールした時に出てきた、curlというツールも同じような内容のツールだと感じました。 って事は、どっちが強いか決めるのがジャンプ世代じゃないですかね?

[JS]Canvasでよく使う描画テクまとめ

HTMLで画像をいじくりたい時は、canvasを利用して編集するのは一般的ですが、WindowsストアアプリではHTML+CSS+JSでのアプリ開発ができる事もあって、簡単な画像編集であれば、C#やVBを使うより分かりやすいし資料が多く、C++でDirectXをガリガリ書くよりお手軽。入出力もファイルピッカーを使えば簡単に実装できます。今回は、Windowsのコードではなく、Canvasを利用する時のJavaScriptを使いどきに合わせてまとめていきます。