Windows system >> Windowsの知識 >  >> コンピュータソフトウェアのチュートリアル >> サーバー技術 >> サーバーについて >> Apacheはphpファイルが直接アクセスされるのを禁止しています

Apacheはphpファイルが直接アクセスされるのを禁止しています

  

最初は、書き換え規則でphpサフィックスのURLが直接アクセスされるのを無効にしたいと思いました。しかし、後で書き換え規則が再帰的に呼び出されることがわかりました書き換え規則で直接phpを禁止すると、phpファイルに書き換えられた規則も無効になります。 RewriteEngineOn

RewriteRule ^ test $ /test.php [L]

RewriteRule ^ test.php $$ 0 [F、L]

再帰呼び出し最初はひどいです。 URLリダイレクトは/testにアクセスするときに一度チェックされ、^ test $と一致すると内部的に/test.phpにリダイレクトされますが、内部リダイレクトもURLの書き換えを引き起こすので、再度チェックして^ test.php $と一致させます。直接操作することを余儀なくされたため[F](禁止)、403エラーとなりました。この場合は、サーバーからリダイレクトされたかどうかを判断する必要があります。現時点では使用できるサーバー変数にREDIRECT_URLがあるので、これを使用して判断を試みました。

RewriteEngineOn

RewriteRule ^ test $ /test.php [L]

RewriteCond%{REDIRECT_URL} ^ $

RewriteRule。* $ 0 [F、この書き込みアクセス/テストはまだ403、ちょっとしたチェックですが、RewriteCond%{REDIRECT_URL}は常に空であることがわかり、これは面倒なので、書き換え規則でphpを直接禁止する方法はありません。しかし、それはより安価な方法で行うことができます。これはphpファイルでREDIRECT_URLを判断するためのものですが、この方法は実装できますが、非常に劣っているように感じますが、これまでのところこれ以上の方法はありません。

$ _SERVER ['REDIRECT_URL'] ordie( 'Forbidden');

//これは単なるテキストの表示であり、実際に使用したときに出力されるHTTPエラーコードです。

echo $ _SERVER ['REDIRECT_URL']; //表示情報に正常にアクセスします。

?>

このPHPコードをグローバル参照に入れて変更します。問題はありませんが、それは完璧な解決策ではありませんが、少なくとも解決されているものです。
zh-CN"],null,[1],zh-TW"]]]

Copyright © Windowsの知識 All Rights Reserved