私の前の質問に関連する: .htaccess は最初に Cookie をチェックし、次に有効なユーザーをチェックします
こんにちは、ここの専門家からの助けに本当に感謝しています。私の httpd.conf は、mod_auth_mysql または Cookie を使用したユーザー ログインを要求する必要がありますが、現在はユーザー ログインのみをチェックしています。前の質問のコードは、現在 httpd.conf にあります。
機能しているもの:
現在、すべての /var/www/downloads およびユーザーのサブディレクトリ (/var/www/downloads/~username~) には、mod_auth_mysql を使用したユーザー名とパスワードが必要です。これは機能します。
機能していないもの:
問題は、mod_auth_mysql を使用したログイン (動作)またはCookie (動作しない) のいずれかを必要とする設定があることです。Cookie が存在する場合、ユーザーが /var/www/downloads/ にアクセスすると、ディレクトリの内容が自動的に表示されます。しかし、そうではありません。ユーザー名/パスワードを要求します。
私は SetEnvIf を使用していますが、「すべてを満たす」という誤った使用法を使用している可能性があります。httpd.conf と /sites-enabled/000-default の間で競合が発生する可能性があります。私はここにあるもののほとんどを経験していないので、どんな助けでも大歓迎です!
HTTPD.conf:
RewriteEngine on
RewriteLogLevel 9
RewriteLog /var/www/logs/rewrite.log
#Block IPs
<Directory /var/www>
RewriteEngine On
#only use my server for apache
RewriteCond %{HTTP_HOST} !^2.2.2.2$ [NC]
RewriteRule ^(.*)$ http://www.google.co.uk/$1 [L,R=301]
RewriteCond %{REMOTE_ADDR} 0.0.0.0 [NC,OR]
RewriteCond %{REMOTE_ADDR} 1.1.1.1 [NC]
RewriteRule ^(.*)$ http://www.google.com [R]
</Directory>
# DOWNLOADS TOP DIRECTORY
<Directory /var/www/downloads>
#Options Indexes
#AllowOverride All
#Order deny,allow
#Deny from all
#Allow from All
AuthName "Please don't hack the server, thanks"
AuthBasicAuthoritative Off
AuthUserFile /dev/null
AuthMySQL On
AuthType Basic
Auth_MYSQL on
Auth_MySQL_Host localhost
Auth_MySQL_User user
Auth_MySQL_Password password
AuthMySQL_DB db
AuthMySQL_Password_Table users
Auth_MySQL_Username_Field username
Auth_MySQL_Password_Field password
Auth_MySQL_Empty_Passwords Off
Auth_MySQL_Encryption_Types Plaintext
Auth_MySQL_Authoritative On
require user luke
</Directory>
# EXAMPLE USERS DIRECTORY
# MIKE
<Directory /var/www/downloads/mike>
SetEnvIf Cookie (.*)cookiename(.*) norequire_auth=yes
Order Deny,Allow
deny from all
Satisfy Any
#MYSQL AUTH
AuthName "Please login"
AuthBasicAuthoritative Off
AuthUserFile /dev/null
AuthMySQL On
AuthType Basic
Auth_MYSQL on
Auth_MySQL_Host localhost
Auth_MySQL_User user
Auth_MySQL_Password password
AuthMySQL_DB db
AuthMySQL_Password_Table users
Auth_MySQL_Username_Field username
Auth_MySQL_Password_Field password
Auth_MySQL_Empty_Passwords Off
Auth_MySQL_Encryption_Types Plaintext
Auth_MySQL_Authoritative On
require user mike
#COOKIE AUTH
Allow from env=norequire_auth
</Directory>
場合によっては、sites-enabled/000-default:が競合を引き起こしている可能性がありますか? http://jsfiddle.net/Xcece/
私は .htaccess ファイルを使用していません。私は多くのディレクティブを変更しましたが、かなり迷子になりました。
私の人生では、なぜそれが機能しないのか理解できません-存在する可能性のある競合をよく理解していないので、将来これを回避できるように説明を付けて正しい方向に向けることは素晴らしいことです. ありがとうございました。