public_html
私のディレクトリに個人認証を設定しましたが、home
何の効果もありません。つまり、資格情報を求めるポップアップが表示されるはずですが、そのようなことは起こりません。認証はサーバールートのディレクトリで正しく機能し、うまく機能します。今はサーバーを改編しています。
詳細は次のとおりです。私が置く設定ファイルに関連するいくつかの追加の質問とクエリがあります。勇敢な。
- デフォルトのHTTPディレクトリがあり、
/var/www/html
HTTPSにも同じディレクトリがあります。 - 私の個人URL
index.html
へのリンクを含むファイルは1つだけです。~tomas
良い結果。userdir
マッピングにモードを使用しています~tomas
。 - プライベートディレクトリもあり、
cgi-bin
CGIはうまく機能しますが、URLが必要です。~tomas/cgi-bin
ディレクトリリストの表示、何らかの理由で動作せずに403 Forbiddenが表示されます。 - 承認なしにホームディレクトリをHTTPSとHTTPで使用できるようにしたいです。ただし、クライアントが以下を介して
public_html
個人ディレクトリのいずれかを要求した場合は、~user
アクセスを認証する必要があります。認証はHTTPSを介して行う必要があります。。したがって、HTTPをHTTPSに切り替える必要があります。 HTTPS機能を設定してテストしましたが、このコンテキストでは何も行いませんでした。重要な場合は、FQDNはありません。
~user
ただし、主な質問は、HTTPを介して認証自体が機能するようにする方法です。
構成をすべて入れuserdir.conf
ました。推測する問題は.NETでワイルドカードを使用することです/home/*/public_html
。
これはuserdir.conf
。
<IfModule mod_userdir.c>
UserDir "public_html"
UserDir disabled
UserDir enabled tomas
<Directory "/home/*/public_html">
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
AuthType Basic
AuthName "Personal HTML"
AuthUserFile "/usr/share/apache2/passwd/passwords"
Require valid-user
SSLOptions +StdEnvVars
</Directory>
<Directory "/home/*/public_html/cgi-bin">
Options ExecCGI Indexes
SetHandler cgi-script
</Directory>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
この設定ファイルやApacheへの全体的なアプローチに関するコメントがある場合は、コメントを残してください。
答え1
キーはLimit
ガイドラインです。手がかりは存在する<Limit>
コマンド部分mod Apacheドキュメントページcore
。
<Limit>
<LimitExcept>
ディレクティブでorディレクティブを使用するときは、Require
他のディレクティブの有無にかかわらず、成功した最初のディレクティブが要求を承認することに注意してください。Require
Require
Require
現在のケースと一致する最初のケースによって、処理方法が決定されます。私の質問の構成によると、
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
AuthType Basic
AuthName "Personal HTML"
AuthUserFile "/usr/share/apache2/passwd/passwords"
Require valid-user
Require all granted
上記のリストの2行目のGETリクエストは、単純なGETリクエストでこれを行います。そのAuthType Basic
下の行と他の行はデッドコードです。正しいアプローチは次のとおりです。
<Limit GET POST OPTIONS>
AuthType Basic
AuthName "Personal HTML"
AuthUserFile "/usr/share/apache2/passwd/passwords"
Require valid-user
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
ところで、これはディレクティブが無視される場合ですLimit
。
Require all granted
<Limit GET POST OPTIONS>
AuthType Basic
AuthName "Personal HTML"
AuthUserFile "/usr/share/apache2/passwd/passwords"
Require valid-user
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
最初の行はリクエストを成功させて承認します。