2016-05-18 9 views
-2

このような作業をしたいと思います。フォルダからPHPファイルへのすべてのアクセスをリダイレクト

私は、/ doc /フォルダ内に多数のドキュメントファイルを持っています。ユーザーがこのフォルダのコンテンツにアクセスしようとすると、何らかの確認が必要なので、そのアクセス権をルートフォルダのdownload.phpファイルにリダイレクトし、実際のREQUEST_URIをPHPファイルに渡す必要があります。

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/doc.*$ [NC] 
RewriteRule ^(.*)$ http://example.com/download.php?r=%{REQUEST_URI} [L,R=301] 

しかし、私はリダイレクトされたURLにERR_TOO_MANY_REDIRECTSのエラーを得ている:私は、htaccessのファイルでこれを試す?この場合には、私が欲しいもの(download.phpないdownload.php R =/download.php、? r =/doc/abc/xyz.pdfが正しいです)

私が間違っていたことについて誰かが説明できますか?どうもありがとうございました。

+0

に変更してください。あなたの書き直し線が間違っており、永久にループし続けます。毎回書き換え条件を使用しないようにファイルチェックを追加する必要があります。したがって、存在しないファイルを指しているときにのみ使用します。 次の行を追加してください。RewriteCond%{REQUEST_FILENAME}!-d – Brett

答えて

0

リライトの第2行が正しくないため、永久にループし続けます。毎回書き換え条件を使用しないようにファイルチェックを追加する必要があります。それは はそれがdownload.phpするユーザーをリダイレクトするURL http://example.com/doc/file.html

で次の行に

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^doc\/(.*)\.html$ download.php?r=$1 [L,R=301] 

を追加し、存在しないファイルを指していたときにそれは、それを使うだろう?R =ファイルをファイル拡張子を取得する場合は、最終行を

RewriteRule ^doc\/(.*)$ download.php?r=$1 [L,R=301] 
+0

こんにちは、ありがとうございます。 http://example.com/doc/file.htmlをhttp://example.com/download.phpにリダイレクトしたいとします。 – kardel

+0

@kardel check updated Answer – Brett

+0

/doc/star/file.pdfや/doc/biz/new/file.htmlのように/ doc /フォルダ内のすべてのURLをリダイレクトする方法はありますか? – kardel

関連する問題