0

ユーザーは私のウェブサイトに入り、ホームページに到着します。彼/彼女は常にホームページにいるだけです。他のすべてのファイルはホームページによって実行されるスクリプトですが、ユーザーはそれらに移動しないでください。ここに私のディレクトリレイアウトがあります:
ディレクトリ

それらは Front.php に到着し、常にFront に留まる必要があります。そこで、次のコードを含む htaccess ファイルを作成しました。

DirectoryIndex Front.php index.html
AuthType Basic
AuthName "Login"
AuthUserFile /disks/*/*/*/.htpasswd
Require valid-user

現在、すべてに認証が必要です。しかし、Front.php以外はすべて認証が必要です。Front.php を認証から除外するにはどうすればよいですか?

また、この認証はスクリプトの実行を妨げますか、それともユーザーがURL 経由でファイルにナビゲートすることを妨げるだけですか?

4

4 に答える 4

2

現在、すべてに認証が必要です。しかし、Front.php 以外はすべて認証が必要です。Front.php を認証から除外するにはどうすればよいですか?

試す:

SetEnvIfNoCase Request_URI ^/Front.php norequire_auth=true

# Auth stuff
AuthType Basic
AuthName "Login"
AuthUserFile /disks/*/*/*/.htpasswd

# Setup a deny/allow
Order Deny,Allow
# Deny from everyone
Deny from all
# except if either of these are satisfied
Satisfy any
# 1. a valid authenticated user
Require valid-user
# or 2. the "require_auth" var is set
Allow from env=norequire_auth

これはSatisfyディレクティブを使用して に設定します。anyつまり、Require valid-userまたは でAllow十分です。この変数norequire_authは、URI が の場合にのみ設定され/Front.phpます。必要に応じて、追加のSetEnvIfNoCaseディレクティブを含めることで、ホワイトリストに登録された URI を追加できます。

また、この認証はスクリプトの実行を妨げますか、それともユーザーが URL 経由でファイルに移動するのを妨げるだけですか?

includeまたはrequire. _ ただし、の HTML コンテンツから直接リンクFront.phpすると、Front.php のログイン ダイアログが表示されます。

于 2012-10-12T19:22:03.060 に答える
1

他のスクリプトを入力できないようにする必要があると言いますが、それに認証を追加します。

これらのスクリプトを直接実行したくない場合は、public_htmlフォルダーから移動して、外部からアクセスできないようにすることをお勧めします。あなたはまだfront.phpにそれらを含める/要求することができます。

管理スクリプトは、.htaccessから認証を追加できるサブディレクトリに簡単に移動できます。すべてではないが一部のファイルに認証を追加する場合は、PHPスクリプトから必要なヘッダーを送信することもできます。

ファイルの先頭に次のようなチェックが表示されることがよくあります。

defined('MYAPPDEFINE') || die('No direct access allowed');

エントリページ(index.php、front.phpなど)で、次の行を追加できます。

define('MYAPPDEFINE', 'Whatever value');

このように、直接呼び出されたすべてのファイルは停止してすぐに終了しますが、front.phpからインクルードされると、チェックは成功し、ファイルがインクルードされます。

于 2012-10-12T19:13:05.273 に答える
0

このルールセットを使用します。

<Filesmatch "^((?!Front\.php).)*$">
AuthType Basic
AuthName "Login"
AuthUserFile /disks/*/*/*/.htpasswd
Require valid-user
</Filesmatch>

<Files "Front.php">
allow from all
</Files>
于 2012-10-12T19:10:50.463 に答える
0

この .htaccess コンテンツを使用して、人々が front.php 以外を要求できないようにします。

RewriteEngine On

RewriteCond %{THE_REQUEST} !front.php [NC]
RewriteRule .* - [F,L]

これで、Apache にアクセスするすべてのユーザーが利用できるのは、fron.php だけになります。

ところで-私の知る限り-Apacheに特定のディレクトリ内の何かを認証させることはできますが、単一のファイルは認証できません。

于 2012-10-12T19:32:20.423 に答える