与我以前的问题相关: .htaccess先检查cookie,然后检查有效用户
嗨,大家好,我真的很感谢这里的专家的帮助。 我的httpd.conf应该要求使用mod_auth_mysql或cookie的用户login – 但现在只是检查用户login。 上一个问题的代码现在位于我的httpd.conf中。
什么工作:
目前,用户的所有/ var / www / downloads和子目录(/ var / www / downloads /〜username〜)需要使用mod_auth_mysql的用户名和密码。 这工作。
什么不工作:
问题是:我有设置,应该要求使用mod_auth_mysql(工程)login或 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文件。 我已经改变了大量的指令,并已相当迷茫。
我不知道为什么它不起作用 – 我不太了解可能存在的冲突,所以在正确的方向和解释的一点,所以我今后可以避免这种情况将是很大的。 谢谢。
最后! 经过一个星期的搜索…
问题在于设置cookie。 将文件放在不同的目录中意味着httpd.conf不能正确读取cookie ,事实上这是正确的 。
我必须将cookie的第四个参数设置为“/ downloads / mike”,从而允许它正确地被httpd.conf文件读取。
session_start(); setcookie("cookiename","cookiename",time() + 3600, '/downloads/mike');
只要记住使用time()-x
销毁cookie的time()-x
使用第四个参数/downloads/mike
来销毁它。