12

.htaccessファイルの関連部分は次のとおりです。

AuthUserFile  /var/www/mywebsite/.htpasswd
AuthGroupFile /dev/null
AuthName  protected
AuthType Basic
Require valid-user

ErrorDocument 400 /var/www/errors/index.html
ErrorDocument 401 /var/www/errors/index.html
ErrorDocument 403 /var/www/errors/index.html
ErrorDocument 404 /var/www/errors/index.html
ErrorDocument 500 /var/www/errors/index.html

ドキュメントルートは/var/ www / mywebsite / webに設定されており、多くのvhost上にあります。index.htmlページに移動できます。

私が見ているのは、一般的なApache401ページです。

編集:これは私のブラウザのエラーメッセージです:

認証が必要です

このサーバーは、要求されたドキュメントへのアクセスが許可されていることを確認できませんでした。間違ったクレデンシャル(パスワードの誤りなど)を指定したか、ブラウザが必要なクレデンシャルを指定する方法を理解していません。

さらに、ErrorDocumentを使用して要求を処理しようとしたときに、401AuthorizationRequiredエラーが発生しました。Apache / 2.2.9(Debian)PHP / 5.2.6-1 + lenny8 with Suhosin-Patch Server(www.dirbe.com Port 80)

4

3 に答える 3

6

/ var / www / errorsがapacheユーザーによって読み取り可能であることを確認し、これをapache構成に含めます。

<Directory /var/www/errors>
  Order allow,deny
  Allow from all
</Directory>
于 2010-12-03T00:05:24.227 に答える
4

ErrorDocumentは、ファイルパスではなく絶対URLパスを取ります。したがって、次のようになります。

ErrorDocument 404 /error/error.html

ドキュメントルートの下に/error/error.htmlファイルがあると仮定します。

于 2018-02-19T15:15:31.880 に答える
3

この質問(および回答とコメント)は私をたくさん助けてくれました、どうもありがとう!

私は少し違う方法で解決し、共有したいと思いました。この場合、カスタム401エラードキュメントを提供する必要があり、ルートパスをバックエンドアプリにプロキシする必要がありました。

したがって、たとえば、http ://example.comはhttp:// internal-server:8080/からコンテンツを提供する必要がありました。また、http: //example.comは、カスタム401エラードキュメントで基本認証を使用して保護する必要がありました。

そこで、DocumentRootに「error」という名前のディレクトリを作成しました。vhostからの関連行は次のとおりです。

    ErrorDocument 401 /error/error401.html

    # Grant access to html files under /error
<Location "/error">
Options -Indexes
Order Deny,Allow
Allow from all
</Location>

    # restrict proxy using basic auth
<Proxy *>
Require valid-user
AuthType basic
AuthName "Basic Auth"
AuthUserFile /etc/apache2/.htpasswd
</Proxy>

    # Proxy everything except for /error
ProxyRequests Off
ProxyPass /error !
ProxyPass / http://internal:8080/
ProxyPassReverse / http://internal:8080/
于 2011-08-30T15:56:44.723 に答える