2011-12-10 13 views
5

RewriteMap関数の結果を使用して、ディレクトリへのアクセスを条件付きで許可しようとしています。
クッキー(my_cookie)からタイムスタンプを読み込んで、httpd.confで定義したRewriteMap(my_rewrite_map_func)に渡します(実行可能ファイルで、 "TRUE"または "FALSE"をstdoutにechosします)。 CookieのタイムスタンプはApacheの現在の時間の特定の範囲内です)。私の.htaccessファイルのApache RewriteMapを使用してファイルへの直接アクセスを防止する

RewriteMap my_rewrite_map_func prg:/var/www/program 

内容は以下のとおりです。

RewriteEngine On 
RewriteCond %{HTTP_COOKIE} my_cookie=([^;]+) [NC] 
RewriteCond ${my_rewrite_map_func:%{TIME}%1|FALSE},FALSE ^([^,]+),\1 [NC] 
RewriteRule ^(.*)$/[NC,L,QSA,F] 

私は、それ自体が動作しているプログラムは、クッキーが読み込まれていることを確認することができ、およびApacheのタイムスタンプとクッキーのタイムスタンプが内にあり許容範囲。

2番目のRewriteCondの正規表現は、$ {my_rewrite_map_func:%{TIME}%1 | FALSE}の戻り値がFALSEかどうかをチェックしますが、これを設定してもRewriteRuleは発生しません。

本質的に、$ {my_rewrite_map_func:%{TIME}%1 | FALSE}の値を評価する方法を決定できません。これの価値をよりよく抽出または保存する方法はありますか?

ご協力いただければ幸いです。

UPDATE - SOLUTION: 私はこの質問がオフトピックとしてフラグが立てられた理由、それはCを呼び出すためのmod_rewriteを使用してApacheの.htaccessファイルによるPHPスクリプトからHTMLファイルを保護に関し、わからないんだけど++プログラム。クッキー存在しない場合に対処するために、2つの追加の行と一緒に使用する場合

はかかわらず、上記のコードは完璧に動作します:

RewriteCond %{HTTP_COOKIE} !^.*my_cookie.*$ [NC] 
RewriteRule ^(.*)$/[NC,L,QSA,F] 

うまくいけば、これは同じ問題で困難を経験している人を助けるだろう。これはWeb上の他の場所ではほとんど成功していないようです。

私の具体的なケースでは、HTMLやその他のファイルに直接アクセスすることや、ダウンロードスクリプトを使用せずに直接アクセスすることはできません。 PHPコードは、これらのファイルへのリンクを含むページを生成するために使用されます。このファイルから、Javascriptはajax呼び出しを実行してサーバーのタイムスタンプを取得し、Cookieを設定します。クッキー内のタイムスタンプは、特定の範囲内のアクセスが許可されている場合は、ページ読み込み時のApacheの時間と比較されます。ここで

+1

私はこれがトピックではないとは思わない、明らかにLAMP関連です。 – puk

答えて

0

は、私は(あなたはそれが命令の多くだと思うかもしれないが、それがすっごく速いあなたの代わりに2(または何か)の約5(または何か)condを心配しないことを扱うPHPに比べてです)ん方法は次のとおりです。

RewriteEngine On 
RewriteCond %{HTTP_COOKIE} my_cookie=([^;]+) [NC] 
# Don't touch anything but create MYCOOKIE environment 
# and set it to empty if not found: 
RewriteRule . - [E=MYCOOKIE:${my_rewrite_map_func:%{TIME}%1|}] 
# If the environment was found = not empty: 
RewriteCond %{E:MYCOOKIE} !^$ [NC] 
# ... then process a rewrite rule: 
RewriteRule [blabla...blabla] 

私はその50回のようなことをして、私のWebサーバーはまだ驚くほど高速です。 (ボトルネックはデータベースです)

希望します。

関連する問題