2011-06-28 12 views
2

私は、単一のPHPファイルへのすべてのリクエストを送信するには、このコードを使用しています:htaccessで特定のファイル拡張子をブロックしていますか?

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) myfile.php?id=$1 [QSA,L] 

しかし、今、私はまたmyfile.phpや他のPHPSする直接アクセスをブロックします。私はphpファイルをブラウザから直接開くのではなく、includeなどのために働かなくてはなりません。

どうすればいいですか?

+0

は、私はあなたが書き換えた場合、あなたがトラブルに巻き込まれるだろうと思いますすべてをmyfile.phpとして保存しますが、myfile.phpへのアクセスを拒否します。あるいは私は質問を誤解していますか? – Sodved

+0

rewrited URLはhttp://domain.com/stuff/substuffのようになり、stuff/substuffはmyfile.phpによって処理され、PHPは直接開かれません。 – riviraz

答えて

0

は多分これが役立ちます。

RewriteCond %{REQUEST_URI} !(.*).php$ [NC] 
RewriteRule ^.* - [F,L] 

いくつかの素敵な例はここにある:Apache wiki: RewriteCond

+0

を参照してください。しかし、それは '.php'、' .inc'、 '.bak'、' .ext'のようには機能しません。各エクステンションごとに行単位で記述する必要はありますか? –

+0

すべて正常に動作します。しかし、あなたはすなわち、フルバージョン、RewriteEngineが上であることを確認する必要があります! \tするRewriteCondの%{REQUEST_URI}上 '<のIfModule mod_rewrite.c> RewriteEngineのphp $ [NC] \tのRewriteRuleは^(。*)。。 * - [F、L] ' – Andron

4

ファイルディレクティブでファイルをブロックできます。 .incで終わるファイルをブロックするには、次の操作を行います。

​​
+0

しかし、それは '.php'、' .inc'、 '.bak'、' .ext'のためには機能しません。各エクステンションごとに行単位で記述する必要はありますか? –

+0

複数の拡張機能をブロックするには、 '' –

+0

のような正規表現を使うだけでよいでしょう。 https://httpd.apache.org/docs/trunk/upgrading.html –

関連する問題