30

ディレクトリをパスワードで保護しようとしていますが、パスワードで保護する必要があるディレクトリに 2 つのファイルがあります。

  • .htaccess
  • .htpasswd

HTACCESS:

###Contents of .htaccess:
AuthUserFile /var/www/html/path/to/my/directory/.htpasswd
AuthName "Protected Files"
AuthType Basic
Require user admin

HTPASSWD:

###Contents of .htpasswd
admin:oxRHPuqwKiANY

パスワードも管理者ですが、どのパスワードを試しても常に間違っています。すぐにパスワードを再度要求されます。

この構成の何が問題になっていますか?

4

9 に答える 9

30

この問題はほとんどの場合、apache が .htpasswd ファイルを読み取れないために発生します。思い当たる原因は以下の4つです。

  1. パスを正しく解析していません...どのように .htaccess ファイルを作成しましたか? UNIX の行末がありますか (Windows でメモ帳を使用するのとは対照的ですか?

  2. パスは正しいですか?次のコマンド (パスの更新を含む) は何を示していますか? ls -l /var/www/html/path/to/my/directory/.htpasswd

  3. Web サーバーはファイルにアクセスできますか? chmod 644 を実行して、問題が解決するかどうかを確認してください。

  4. .htpasswd ファイルを解析できません。この場合、crypt() 暗号化を使用しているため、Linux でファイルを作成したようで、おそらく問題ありません。一部のタイプの暗号化は、特定のプラットフォームでのみ機能します。疑わしい場合は、MD5 に切り替えてみてください。

Apache エラー ログに役立つメッセージが見つかる場合があります。

私のお金は#3にあります。

于 2012-04-05T07:14:17.380 に答える
26

MAMPを使用して同様の問題が発生しました.htpasswdを手動で作成していたためです。htpasswd解決策は、ターミナルでコマンドを使用することでした:

htpasswd -bc .htpasswd someuser somepass

これにより、次のように見える.htaccessファイルで正常に機能する.htpasswdファイルが作成されました。

AuthType Basic
AuthName "This site is in alpha and requires a password."
AuthUserFile "/Applications/MAMP/htdocs/mywebsite/.htpasswd"
require valid-user
于 2014-12-10T23:29:32.067 に答える
6

予期したフォルダーではなく、親フォルダーからのパスワード保護が表示される可能性がわずかにあります。

/etc/apache2/sites-enabled フォルダーにファイルが 1 つしかない場合は、次のようなサイト フォルダーのセクションがあるかどうかを確認します。

<Directory /var/www/mysite.com>
   AllowOverride All
</Directory> 

それ以外の場合は、次のようなサイト名のファイルがある場合:

/etc/apache/sites-enabled/YOUR_SITE_NAME_HERE.conf

代わりにそのファイルを編集し、

AllowOverride All

そこで。それが重要な部分です!最小値のみを許可する場合は、次を指定します。

AllowOverride AuthConfig

代わりは。

于 2013-06-27T01:26:26.990 に答える
3

私の問題は、AuthFile 行の絶対パスを指定しなかったことです。

于 2016-06-17T23:48:42.323 に答える
1

同じ問題がありました。

CRYPT_STD_DES - アルファベット "./0-9A-Za-z" の 2 文字のソルトを使用した標準の DES ベースのハッシュ。

function standard_salt(){
$a = array_merge(range(0,9),range('a','z'),range('A','Z'));
return (string) $a[rand(0,count($a)-1)].$a[rand(0,count($a)-1)];
}

echo(crypt("admin",standard_salt()));

例:

admin:dsbU.we73eauE

オンラインの JavaScript エンクリプターも利用できます。

それでもうまくいかない場合は、次のことに注意してください。

  • UNIX の改行を使用する
  • 正しい AuthUserFile パスを使用してください。次を使用して取得できます。echo $_SERVER['DOCUMENT_ROOT'];
  • ファイルを読み取り可能に設定:chmod(".htpasswd",0644);
于 2013-04-15T12:17:06.570 に答える
0

同じ問題を解決するのに約2時間かかりました。しかし、問題はnginxにありました。フロントWebサーバーとしてnginxがあり、プロキシ構成の行がありました:

proxy_set_header 承認 "";

認証フィールドを上書きし、apache は入力されたログインとパスワードを受け取りません。

この行をコメントアウトしたところ、うまくいきました。

于 2015-10-14T07:55:13.923 に答える