2011-01-25 4 views
0

を使用する - このようなものになります。私が行うことができるようにしたいのですがどのようなは、私は.htaccessファイルを持っているクライアントからスクリプトを拒否しますが、ローカルに

RewriteEngine On 

<FilesMatch ^.*\.php.*$> 
Order allow,deny 
Deny from all 
Satisfy All 
</FilesMatch> 

RewriteRule ^help$ scripts/help.php [L] 
#more rewrites here... 

を、このようなhttp://example.com/helpとしてURLを書き換えることを許可しています(ルールに従って)、scriptsディレクトリのhelp.phpスクリプトによって処理されますが、同時に、http://example.com/scripts/help.phpを使用してスクリプトを直接実行することを拒否します。問題は、これらのステートメントを使用すると、両方のURLが403 Forbiddenを返すことです。私がしようとしていることが可能であるかどうかは確かではありません...

残念ながら、私はルートWebディレクトリの外/上にファイルを置くことができません。私はhttpd.confファイルにアクセスできます。

答えて

1

/helpが要求された場合は、内部で/scripts/help.phpに書き換えられ、<FilesMatch>のパターンを満たします。そのため、/helpへのアクセスも禁止されています。

しかし、あなたはそれがrequest lineをチェックすることによって、直接要求された場合のみ、/scripts/help.phpへのアクセスを禁止するのmod_rewriteを使用することができます。要求されたURIのパスに.phpがあるかどうかを

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /[^?\ ]*\.php[/? \] 
RewriteRule .*\.php.*$ - [F] 

ここ^[A-Z]+\ /[^?\ ]*\.php[/? \]テスト(それだけかもしれません?とスペース以外の任意の文字が続きます)、/(パスセグメントセパレータ)、?(URIクエリのインジケータ)またはスペース(URIの末尾)のいずれかが続きます。

関連する問題