За последние 24 часа нас посетили 54306 программистов и 1776 роботов. Сейчас ищут 832 программиста ...

Помогите с .htaccess (AuthType Basic, RewriteRule)

Тема в разделе "Прочие вопросы по PHP", создана пользователем AndroNick, 11 ноя 2007.

  1. AndroNick

    AndroNick Активный пользователь

    С нами с:
    23 сен 2006
    Сообщения:
    17
    Симпатии:
    0
    Собственно задача:

    Есть сайт, при заходе на который обычный пользователь перенаправляется на page1.php без запроса авторизации,
    а авторизованный пользователь LoginUser - на page2.php
    Авторизация производится путем перехода по URI = http://LoginUser:password@site.com/ (при этом браузер автоматически авторизуется на сервере Basic методом)

    Следующий код в .htaccess работает, но выводит окно авторизации для неавторизованных (что ненужно):
    Код (Text):
    1. RewriteEngine on
    2. AuthUserFile /usr/local/www/.htpasswd
    3. AuthName site
    4. AuthType Basic
    5. Require valid-user
    6.  
    7. RewriteCond %{REMOTE_USER} =""
    8. RewriteRule ^(.*)?(.*)$ page1.php?$2 [L]
    9.  
    10. RewriteCond %{REMOTE_USER} ="LoginName"
    11. RewriteRule ^(.*)?(.*)$ page2.php?$2 [L]
    Следующий код окна авторизации не выводит, но даже при "ручной" авторизации перенаправляет на page1.php:
    Код (Text):
    1. RewriteEngine on
    2. AuthUserFile /usr/local/www/.htpasswd
    3. AuthName site
    4. AuthType Basic
    5. Satisfy Any
    6.  
    7. RewriteCond %{REMOTE_USER} =""
    8. RewriteRule ^(.*)?(.*)$ page1.php?$2 [L]
    9.  
    10. RewriteCond %{REMOTE_USER} ="LoginName"
    11. RewriteRule ^(.*)?(.*)$ page2.php?$2 [L]
    Тоесть %{REMOTE_USER} возвращает пустую строку ???

    Во втором варианте переменная REMOTE_USER не определяется..
    Еще я заметил, что во втором варианте в скрип page1.php попадает суперглобальная переменная $_SERVER['PHP_AUTH_USER'] содержащая "LoginUser" !!!
    Но в .htacess и эта переменная (%{'PHP_AUTH_USER'}) возвращает пустую строку...

    Я пробовал всевозможные варианты с %{LA-U:REMOTE_USER} %{ENV:pHP_AUTH_USER}, но ничего не достиг..
    В одних вариантах выводится окно авторизации для неавторизованных, в других %{REMOTE_USER} ничего не возвращает... ((

    Прошу помочь мне с этой задачей.. Понимаю что задача не простая, хотя и показалась мне таковой на первый взгляд..

    (извиняюсь если залез не вту тему... просто не нашел подходящей)
     
  2. AndroNick

    AndroNick Активный пользователь

    С нами с:
    23 сен 2006
    Сообщения:
    17
    Симпатии:
    0
    Спасибо всем кто хоть чуть задумался над моим вопросом... )

    Решил собственно примерно так =

    Код (Text):
    1. RewriteEngine on
    2. RewriteRule .* - [E=AUTH:%{HTTP:Authorization}]
    3.  
    4. <Files login>
    5.   AuthUserFile /www/.htpasswd
    6.   AuthName PROXY
    7.   AuthType Basic
    8.   Require valid-user
    9. </Files>
    10.  
    11. RewriteCond %{AUTH} !=""
    12. RewriteRule .* px/proxy.php
    Теперь все кто ввел в броузере site.com/login и на запрос авторизации ввели логин/пароль автоматически начинают перенаправляться на страницу px/proxy.php при любом запросе... перенаправляются до переоткрытия браузера или чистки кэша..

    Всем спасибо