2011-07-18 7 views
2

リダイレクトが必要なアプリケーションを構築しています(または書き直していますか?クライアント側でURLが同じになっている必要があります)をWebサーバー(Apache)の指定されたディレクトリにある.pdfファイルで発生するすべての要求の.phpファイルにコピーします。しかし、ユーザーがPDFをブラウザに表示しようとしている(ダウンロードしていない)場合にのみ、この要求を書き直してください。私はこの第二の部分が不可能だと感じている。Apacheサーバー上のすべての.PDFリクエストを.phpファイルにリダイレクト(書き換え)

誰かが、私が使用する必要がある構文だけでなく、Apacheサーバーの背後で何が起こっているのかを調べるのに役立つリソースがありますか?

また、ファイルが直接ダウンロードされているか、Webブラウザ経由で要求されているかを知る方法はありますか?私は、ブラウザからPDFファイルにアクセスすると、Adobe Readerプラグインを使用してダウンロードして表示するように見えるので、2つの間で区別することはできません。

敬具、

答えて

4
<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    Options +Indexes 
    RewriteEngine On 

    # only if not an actual file exist 
    RewriteCond %{REQUEST_FILENAME} !-f 

    # only if not an actual directory exist 
    RewriteCond %{REQUEST_FILENAME} !-d 

    RewriteRule /your-directory/path/(.+)\.pdf $1.php [NC,L] 
</IfModule> 

1.これは、書き換えされています。

2.閲覧とダウンロードは区別されません。リクエストがApacheサーバーによって受信された場合、応答が返されます。応答はあなたのPHPスクリプトが出力するものになります。更新:@corretgeはあなたにこれに関連する答えを与えました。クライアントから送信されたヘッダーに頼るのは完全に信頼できるものではないと思いますが、その解決策を試すことができます。

3.ここでは、およそApache's mode_rewrite

+0

OPがコードを正確にコピーすると、サーバーエラーが発生します。行の途中でコメントを開始することはできません。 **最初の**空白以外の文字が '#'ならば、行全体がコメントとして扱われます。他のすべての状況では、ディレクティブの一部として扱われます:http://httpd.apache.org/docs/current/configuring.html#syntax – LazyOne

+0

@LazyOne:ありがとう!説明のためにそこに配置しましたが、OPにそれらを削除するように告げるのを忘れました。 – Shef

2
テストされていない

を学ぶことができますが、あなたも試すことができます。

RewriteRule ^(.+)\.pdf$ /downloadPdf.php?pdf=$1.pdf [L,NC,QSA] 

とheaders_list(とHTTPヘッダーの/downloadPdf.phpスクリプトのクエリで)あればこれらの存在している:

header("Content-Type: application/force-download"); 
header("Content-Type: application/download"); 

ダウンロードヘッダが存在する場合、

でファイルを送信
header("Content-Disposition: attachment; filename=\"" . stripslashes($this->ubqDoc[$this->camp]['name']) . "\""); 

そして、ダウンロードのヘッダを強制します。エルス

、このヘッダについて、あなたはPHPからファイルを送信 fpassthru PHPマニュアルを読むのContent-TypeとContent-な長さ

のような他のヘッダを管理する必要が

header("Content-Disposition: inline; filename=" . stripslashes($this->ubqDoc[$this->camp]['name'])); 

でファイルを送信します。

+0

ありがとうございます。ここの情報は間違いなく有用ですが、他の答えはより直接私の質問に答えます。 – MoarCodePlz

+0

心配しないでくださいが、私は興味があります:PDFが強制ダウンロードされた場合、またはブラウザに表示されている場合は、別のヘッダを受け取りますか? – corretge

+0

まだ確認していませんが、上記の回答によればヘッダーが少し異なります。私はいくつかのネットワークスニッフィングを行い、ここに回答を掲載します。 – MoarCodePlz

関連する問題