与我之前的问题相关:.htaccess check for cookie first, then valid-user
大家好,我真的很感谢来自这里的专家的一些帮助。我的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>
如果有帮助,网站启用/ 000-default:可能会导致冲突? http://jsfiddle.net/Xcece/
我没有使用.htaccess文件。我已经改变了一大堆指令并且已经完全迷失了。
我不能为我的生活弄清楚为什么它不起作用 - 我不太明白可能存在的冲突,所以在正确的方向上有一点解释所以我可以避免将来这样做大。谢谢。
答案 0 :(得分:1)
最后!经过一周的搜索...
问题在于设置cookie。将文件放在不同的目录中意味着httpd.conf没有正确读取cookie - 实际上是正确的。
我必须将cookie的第四个参数设置为'/ downloads / mike',从而允许httpd.conf文件正确读取它。
session_start();
setcookie("cookiename","cookiename",time() + 3600, '/downloads/mike');
请记住使用time()-x
销毁Cookie时使用第四个参数/downloads/mike
将其销毁。