2011-12-26 17 views
1

"/ downloads"フォルダ内のファイルをPHPスクリプトにリダイレクトする正規表現があります。しかし、私はそこにいくつかのPHPファイルを表示し、ダウンロードすることはできません(明らかにセキュリティ上の問題です)。しかし、私は正規表現についてそれほどよく分かりません。私はそれ仁藤探していますが、私は見つけることができません取得し、それを右:(正規表現は特定のファイルを除外します

<IfModule mod_rewrite.c> 
RewriteEngine on 

#Redirect any file coming in to the downloads manager 
RewriteRule ^(.+\.*) /downloads?file=$1 [R,L] 
</IfModule> 

唯一のことは、これまでに仕事ができることRewriteRule ^(.+\.php)$ - [L]である。しかし、これは動作しません。誰でもすぐにこれを説明することができれば、あるいは
また、/ downloadsフォルダのindex.phpにリダイレクトされていることがわかっているかもしれません。なぜそれがダウンロードされないのか説明できれば、そうなるでしょう。ダウンロード/ index.phpに行くとダウンロードされますが、単に/ downloadsではありません。それを稼働させるために必要な情報はありません:)
ありがとうございます。

+0

を'。+ \。*'または '。+ \ .. *'?最初の文字列は0以上のピリオドで終わる文字列を検索し、2番目の文字列はピリオド(例:拡張子)を含む文字列を検索します。 –

+0

Apacheの 'httpd.conf'ファイルに投稿した書き換えコードか、' .htaccess'ファイルにありますか? '.htaccess'にあるファイルが'/downloads'ディレクトリ内のファイルであるか、それともルートにあるのでしょうか?あなたの質問を明確にしてください。また、 '/ downloads'の中のどのファイルを違う方法で扱うのでしょうか?それが立てば、質問はあまりにも曖昧すぎて正確に答えることができません。 – ridgerunner

+0

/downloads内の.htaccessです。 PHPファイルは影響を受けない(ダウンロードされない)必要があります。後で他のファイルタイプや特定のファイルを追加することができます。十分に明確でないことを申し訳ありません! –

答えて

0

したくない試合禁止するRewriteCondを使用する:あなたが意味するか、あなたの `RewriteRule`で

RewriteCond %{REQUEST_URI} !\.php$ 
RewriteRule (.*) /downloads?file=$1 [R] 

(それはここでは任意の使用を持っていなかったので、私はLを削除)

+0

トップラインは素晴らしい作品です。しかし、私が/ downloads /を訪れるだけで、一番下の行が無限ループになります。私の古いバージョンは、何か '\ *。\ *'という形式があったときに動作するようになっていました。ファイル名と拡張子。/downloads/folderを訪れて離れて、 'RewriteCond%{REQUEST_URI}!\ php $ RewriteRule ^(。+ \。*)/ downloads?file = $ 1 [R、L]'で動作しているようです。フォルダをダウンロードしようとします。 –

+0

'RewriteRule(。*)/downloads.php?file=$1 [R]'を使ってループを防ぐだけです。 – Gerben

関連する問題