0

「テンプレート」という名前のディレクトリがあります。人々に直接アクセスさせたくないphpファイルがいくつかあるので、これを htaccess に書きました:

<Files *.php>
    Order Deny,Allow
    Deny from all
</Files>

また、人々に直接アクセスしてもらいたいファイルがいくつかあります。これらのファイルの名前は次のとおりです。

switcher.php、switcher1.php、switcher2.php、switcher3.php、switcher4.php、switcher5.php

そして、に位置していますtemplate/styles/theme/

そこで、その場所に新しい htaccess ファイルを作成し、次のように書きました。

<FilesMatch "^switcher[1-5]?\.php$">
    Order Allow,Deny
    Allow from all
</FilesMatch>

これは私のローカルホストではうまく機能しますが、スクリプトを cPanel 共有ホストにアップロードすると、そこでは機能しませんでした。すべての php ファイルへのアクセスが拒否されました。

この問題を解決するにはどうすればよいですか?

このスクリプトは、構成が異なる少なくとも 30 の共有ホストにインストールする必要があるため、ホスティングに変更を依頼することはできません。

4

2 に答える 2

0

REQUEST_URI各ファイルで次を確認します。

$file = basename(__FILE__);
if(preg_match("/$file/", $_SERVER['REQUEST_URI'])){
    die('This file cannot be accessed directly!');
}
于 2012-09-08T13:21:17.570 に答える
0

PHP インクルードを含むディレクトリがあり、ブラウザから直接アクセスしたくない場合は、 を使用してディレクトリを無効にする方法がありMod_Rewriteます。

これを有効にするに.htaccessは、主な指示とガイダンスに従ってファイルを作成し、次のテキストを含めます。

## Enable Mod Rewrite, this is only required once in each .htaccess file
RewriteEngine On
RewriteBase /
## Test for access to includes directory
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /includes/ .*$ [NC]
## Test that file requested has php extension
RewriteCond %{REQUEST_FILENAME} ^.+\.php$
## Forbid Access
RewriteRule .* - [F,NS,L]

/includes/ はインクルード ディレクトリです。

注: ユーザーが直接アクセスしたくないファイルは、別のディレクトリ/フォルダーに保存することを強くお勧めします。メソッドを使用してこれらのファイルにアクセスできますinclude

于 2012-09-08T13:31:47.120 に答える