httpd.conf 代码无法正常工作——建议?

Posted

技术标签:

【中文标题】httpd.conf 代码无法正常工作——建议?【英文标题】:httpd.conf code not working correctly -- suggestions? 【发布时间】:2012-11-04 00:02:28 【问题描述】:

与我之前的问题有关:.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>

​如果有帮助,sites-enabled/000-default: 可能会导致冲突? http://jsfiddle.net/Xcece/

我没有使用 .htaccess 文件。我已经改变了很多指令并且已经迷失了。

我一生都无法弄清楚它为什么不起作用 - 我不太了解可能存在的冲突,所以在正确的方向上进行解释,以便我将来可以避免这种情况伟大的。谢谢。

【问题讨论】:

我已经尝试注释掉/完全删除 sites-enabled/000-default 中的所有指令,但这会停止一切工作,所以看起来我被困住了!继续尝试... 我宁愿希望我不必为此付出赏金(我的代表的一半) - 我注意到在 000-default 中更改 AllowOverride All 并没有改变任何东西。无法弄清楚为什么 cookie 检测不起作用! 【参考方案1】:

终于!经过一周的搜索...

问题在于设置 cookie。将文件放在不同的目录中意味着 httpd.conf 没有正确读取 cookie - 实际上是正确的

我必须将 cookie 的第四个参数设置为“/downloads/mike”,从而允许 httpd.conf 文件正确读取它。

session_start();
setcookie("cookiename","cookiename",time() + 3600, '/downloads/mike');

只记得使用time()-x销毁cookie时使用第四个参数/downloads/mike销毁它。

【讨论】:

以上是关于httpd.conf 代码无法正常工作——建议?的主要内容,如果未能解决你的问题,请参考以下文章

httpd-vhosts.conf 中的重定向无法在 XAMPP 中按预期工作

Apache %REQUEST_URI 无法正常工作

Wampserver 无法让命名虚拟主机工作

mod_rewrite 已安装但无法正常工作

使LAMP正常工作的各种配置

NSSound 无法正常工作