私は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-user
をrequire user inb351
に変更しようとしました。まだ運がない。 AllowOverride
とAuthConfig
とAuthConfig 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>
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>
設定の見た目から、.htaccessファイルを/home/janeb/public_html
ディレクトリは、私が間違っていなければDocumentRoot
です。
正確に何をしようとしているのですか?
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
)に変更するとうまくいきました。