Код httpd.conf работает неправильно предложения?

В связи с моим предыдущим вопросом: .htaccess сначала проверьте cookie, а затем valid- пользователь

Привет, ребята, я действительно был бы признателен за помощь от экспертов здесь. Мой 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. Я изменил множество директив и совсем заблудился.

Я не могу на всю жизнь понять, почему это не работает - я не совсем понимаю конфликты, которые могут существовать, поэтому было бы здорово указать правильное направление с объяснением, чтобы я мог избежать этого в будущем. Спасибо.


person Jimbo    schedule 15.11.2012    source источник
comment
Я пытался закомментировать/полностью удалить все директивы в site-enabled/000-default, но это останавливает все, так что похоже, что я застрял с этим! Продолжаются попытки...   -  person Jimbo    schedule 16.11.2012
comment
Скорее надеялся, что мне не придется назначать награду за это (половина моей репутации) - я заметил, что изменение AllowOverride All в 000-по умолчанию ничего не изменило. Не могу понять, почему не работает обнаружение файлов cookie!   -  person Jimbo    schedule 22.11.2012


Ответы (1)


Ну наконец то! Через неделю поиска...

Проблема была с установкой куки. Наличие файлов в разных каталогах означало, что файл cookie неправильно читался httpd.conf, что на самом деле правильно.

Мне пришлось установить четвертый параметр для файла cookie на «/downloads/mike», что позволило правильно прочитать файл httpd.conf.

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

Просто помните, что при уничтожении файла cookie с помощью time()-x необходимо уничтожить его с помощью четвертого параметра /downloads/mike.

person Jimbo    schedule 22.11.2012