web-dev-qa-db-ja.com

.htaccessはパスワードを尋ねません

私はUbuntu 12.04を使用していて、Apache2サーバーが配置されたページで.htaccessを使用しようとしています。私の.htaccessファイルは次のようになります。

AuthType Basic
AuthName "Password Required"
AuthBasicProvider file
AuthUserFile /home/janeb/.htpasswd
require valid-user

/home/janeb/.htpasswdファイルは次のとおりです。

inb351:$apr1$Ya4tzYvr$KCs3eyK1O2/c7Q9zRcwn..

/ etc/Apache2/sites-available/defaultファイルは次のとおりです。

UserDir public_html
<Directory ~ "public_html/.*">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all  
</Directory>

Apacheを再起動しました。 require valid-userrequire user inb351に変更しようとしました。まだ運がない。 AllowOverrideAuthConfigAuthConfig Indexesも試してみました。だから私は他に何をすべきかわかりません、そしてはい、私が試みたすべてのステップはApacheを再起動しました。

編集:正確なデフォルトファイルは次のとおりです。

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>
    UserDir disabled vmuser
    UserDir public_html
<Directory ~ "public_html/*">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${Apache_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${Apache_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
7
Sarp Kaya

Apacheユーザーは/home/janeb/.htpasswdを読み取ることができないと思います。 Apacheのエラーログを確認してください。

提供されている構成で私が間違っているのはそれだけですが、それだけが問題ではないかもしれません。完全な仮想ホスト構成を提供してください。また、認証構成を.htaccessファイルから移動することをお勧めします-存在する必要はありません。

[〜#〜]編集[〜#〜]

.htaccessファイルが適用されていないのは、AllowOverride All.htaccessファイルが存在するパスに適用されていないためです。

.htaccessファイルは、<Directory>ブロックと同時に適用する必要があります-AllowOverride<Directory ~ ...>ブロックで指定されている場合、それが発生しますafter.htaccessが適用されているはずです。それが機能しないので、 ドキュメントは特に警告します

AllowOverrideは、<Directory><Location>、または<DirectoryMatch>セクションではなく、正規表現なしで指定された<Files>セクションでのみ有効です。

新しいブロックを設定に追加して、.htaccessファイルを使用できるようにします。

<Directory /home>
    AllowOverride All
</Directory>
10
Shane Madden

設定の見た目から、.htaccessファイルを/home/janeb/public_htmlディレクトリは、私が間違っていなければDocumentRootです。

3
Logic Wreck

正確に何をしようとしているのですか?

vhost宣言で...

order allow,deny
allow from all  

誰もがアクセスできるようにする必要があると既に述べましたが、優先順位が高いため、フォローしている.htpasswdは無関係です。

代わりに、そのコードを削除し、.htaccessに必要なのは...

AuthType Basic
AuthName "Password Required"
AuthUserFile /home/janeb/.htpasswd
Require valid-user

.htpasswdファイルは、Apacheを実行しているユーザー(通常はwww-data)が読み取ることができる限り、サーバー上の任意の場所に置くことができます。

IP制限と.htpasswd制限を組み合わせる場合は、..も使用できます。

order deny,allow
deny from all
allow from 192.168.0.10

AuthType Basic
AuthName "Password Required"
AuthUserFile /home/janeb/.htpasswd
Require valid-user

Satisfy Any

私は同じ問題でここに着きました。 public_html定義はサーバーのトップレベル(<Directory />)設定、およびAllowOverride None。これをAll(またはAuthConfig)に変更するとうまくいきました。

0
Ketil