2011-02-02 14 views
0

私は次のシナリオで安全なダウンロードWebアプリケーションを作成しようとしています。ユーザがアクセスするとユニークなURLのApache内部書き換えモジュールですか?

1)ユーザが、URLは、Oracle DBに格納されているこの1時間は実際のURL 2)にマッピングされたa)のワンタイムURL が与えられる:誰がこれを達成することができる方法を知っていますワンタイムURL: a)ApacheモジュールがDBに接続して、ワンタイムURLが存在するかどうかを確認します。 b)存在する場合は内部 内部に書き換えますc)そうでない場合は404またはどんな種類のエラー(404など)でも十分です。

2.aと2.bは私が答えを探しているものです。私はこれを行う方法がわからないし、書き換えが内部的に起こることを確認しています。

おかげ

答えて

0

私の知る限り、これはただのapacheでは不可能です。何がしたいしなければならないことは次のとおりです。

  • Apacheの設定のユニークな提供のURLがまだ有効との行為であれば、「魔法」は
  • サーバースクリプトのチェックが起こるようになりますサーバースクリプトにその独特のリンクをリダイレクトします:
    • ファイルを提供し、データベース内の一意のURL行を無効(配信として削除またはマーク)状態404と
    • 返信するか、他の場合には404ページにリダイレクト

詳細については、サーバーで使用できるスクリプトエンジンと環境設定によって異なります。これは、phpからcgi、.NET、aspなど、さまざまなエンジンで実行できます。

+0

しかし、サーバースクリプトは、サービスを介したデータのヘッダーリダイレクトまたはストリーミングを意味し、私は制約のためにそれを避けようとしています。 –

0

これは、Apacheのトランクバージョンで利用可能な新しいdbd-type RewriteMap機能を使用して行う必要があります。明らかに、これが現在のサーバーの開発ブランチであるとすれば、時間の経過とともに構成の変更を慎重に検討する必要があります。

RewriteEngine On 
RewriteMap urlmapper "dbd:SELECT redirect_url from my_table WHERE some_key = %s" 
RewriteRule /one_time/(.+) ${urlmapper:$1|/404.html} 

もちろん、結果が返されないケースを処理するための追加ロジックが必要です。これを考え出した

http://httpd.apache.org/docs/trunk/rewrite/rewritemap.html#dbd

+0

明らかに、開発ブランチにいるときは、十分に注意深くする必要があります。 – Leigh

+0

このようなサウンドはうまくいく可能性があります。これはプロダクションなのですが、Apache 2.3がリリースされるまで待たなければならないかもしれません。ありがとう:) –

0

...あなたはこのXSEND(https://tn123.org/mod_xsendfile/)を使用して...セットアップにファイルをダウンロードして任意のURIのを処理するためのPHPスクリプトを達成し、すべてを否定することができます実際のファイルディレクトリへのアクセスは、XSENDを介して強制的にファイルを取得する唯一の方法です。

関連する問題