最近、ローカルコンピューター(Windows 10/Apache 2.4)の開発Webサイトの一部が、表示されるべきではないときにWebから表示されることを発見しました。問題は この質問 に似ていますが、解決策が提供されていないため(その投稿で尋ねられたすべての質問がチェックされ、正しいことが確認されています)、私は自分自身の質問をしています。関連するファイルからの関連する抜粋は次のとおりです。
# directory and file names obfuscated intentionally
<Directory "P:/HTTP/{hidden}">
AllowOverride All
AuthType Basic
AuthName "Private Content - Authorized Use Only"
AuthUserFile P:/.htpasswd
Require valid-user
</Directory>
AuthType Basic
AuthName "You must log in to view this site."
AuthUserFile P:/.htpasswd
Require valid-user
(注:デバッグを支援するために、AuthNameエントリはそれぞれ異なる方法で設定されます)
エラーの原因となる行を追加するとエラーが発生するため、.htaccessファイルが処理されていることはわかっていますが、エラーが発生しない場合でも、HTTP認証ログインが表示されません。サイトが表示されます。これは、ローカルマシンだけでなく、サイトにアクセスしようとするすべてのコンピューターで発生します。ログファイルにエラーエントリがありません(.htaccessのガベージラインから生成された意図的なHTTP 500エラーを除く)、AllowOverride
はALL
に設定されています。上記の抜粋です。約2か月前にセキュリティテストを最後に行って以来、Apacheに最近の変更はありません。システムの唯一の変更はWindowsの更新によるものですが、それはこの問題とは関係がないはずです。
興味深いのは、この同じコンピューター上に複数のVMがあり、すべてが異なるOS/Apacheバージョンであり、それらはすべて同じドキュメントルート(ローカルボックス上のSAMBA共有)を指し、すべてが類似(または同一)であるということですそれぞれのApache構成ファイルのエントリ、およびそれらはすべて機能します。この問題を抱えているのはWin10ホストマシンだけです。
どんな提案や手がかりもありがたく受け取られます。
これが私の.htaccess
ファイルの外観です(Apache 2.2)
AuthName "FBI only"
AuthUserFile /etc/Apache2/htpasswd-mysite
AuthType basic
Require valid-user
Order Deny,Allow
Deny from all
Allow from Ip.addr.here
Satisfy Any
私のサイトにIp.addr.here
からアクセスする場合、パスワードは必要ありません。
Apache構成ファイルに私は持っています
<Directory "/var/www/vhosts/site/www">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
だから、htaccessファイルにこれらの行を追加してみてください
Order Deny,Allow
Deny from all
編集
ご覧ください http://www.the-art-of-web.com/system/Apache-authorization/
そのリンクから:
従来の認証ディレクティブを使用してサーバーをアップグレードする場合は、Apacheでmod_access_compatを有効にする(デフォルトでアクティブにする必要があります)ことで、サーバーをすばやく機能させることができます。
Sudo a2enmod access_compat
あなたの場合、そのモジュールが有効になっているかどうかを確認してください。
ここに役立つ情報があります。 https://www.digitalocean.com/community/tutorials/migrating-your-Apache-configuration-from-2-2-to-2-4-syntax
編集2
この関連する質問を参照してください そしてApacheログファイルをチェックしてください!
与えられたすべての提案に従い(それらの提案に感謝します)、ここや他の場所に投稿された質問に答え、そして一般的に私が失う余裕がないほど欲求不満で髪を抜いた後、私は最終的に原因を見つけました問題の、したがって、解決策。すべての子フォルダーへのアクセスを許可していた祖先フォルダーに別の.htaccessファイルがあり、この「アップストリーム」.htaccessファイルが、変更を加えようとしたファイルの設定を上書きしていたことが判明しました。これは奇妙に思えます私にはわかりましたが、祖先の.htaccessの設定をコメントアウトすると、他のファイルが意図したとおりに機能し始めました。
ここで重要なのは、.htaccessファイルが計画どおりに機能していない場合は、親フォルダーを調べて、別のファイルの設定が異なるかどうかを確認することです。