Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [apache-rus] Russian Apache 1.3.4 PL28.0 avaliable




> > > charset. Т.е. обращение к /dir/ обычно выливается в request к /dir/
> > > и subrequest к /dir/index.html. С моим кодом уже обращение к /dir/
> > > (где никакого языка еще нет) приводит к редиректу если он включен.
> > > Можно переделать, скажите как
> > Мне кажется, что логичней это делать после того как принято решение
> > об добавлении charset в Content-Type, если же нет, то и Redirect не нужен.
> Окончательное решение о добавлении charset принимается, когда уже поздно
> - код операции уже известен.
> > К сожалению, мой любимый способ удаления dirprefix не работает.
> > 
> > После:
> > RewriteRule ^/rus/(.*)       /$1 [PT,E=FORCE_CHARSET:koi8-r,L]
> Я сразу не въехал в вашу проблему.  Теперь въехал. У вас происходит
> автоматический (internal) redirect к _одному_ URL, которыый, вдобавок
> кэшируется т.к. кодировка выбирается через FORCE_CHARSET
> 
> Задача CharsetAutoRedirect полностью обратная - раскидать пользователей,
> пришедших на один URL (без кэширования) на _разные_ URL-и (с кэшированием).
> Для вашего сетапа AutoRedirect во-первых не нужен, а во-вторых невозможен
> (т.к. он оринетирован на конструкцию разные кодировки - разные URL).
К сожалению вы меня не правильно поняли, да у меня 
'(internal) redirect к _одному_ URL', но снаружи как раз то что делает 
AutoRedirect - каждой кодировке свой URL.

А проблема вот в чем:
В request_rec есть два поля:

    char *unparsed_uri;         /* the uri without any parsing performed */
    char *uri;                  /* the path portion of the URI */

Вы используете uri, а более правильно (на мой взгляд) было бы 
использование unparsed_uri, так как могли быть всевозможные internal redirects,
которые затерли все упоминания об dirpref. И в частности по видимому
по этому в cgi-bin передается REQUEST_URI в первозданном виде,
правда для этого вызывается original_uri. Кстати, эта же проблема
привила к появлению FORCE_CHARSET. 

После того. как я поменял в check_for_canonic

  if(!redir) return 0;
  if(!r || !r->unparsed_uri) return 0;

  if(r->unparsed_uri[1] == '~') /* /~user form */
    uri = strchr(r->unparsed_uri+1,'/');
  else
    uri = r->unparsed_uri;

то AutoRedirect уже заработал, но я думаю что необходимо заметить
и в других местах, так как кодировка клиента всегда должна определятся
по unparsed_uri. 


И по моему остается вопрос когда отдавать AutoRedirect, все таки до
определения языка слишком рано, ведь если документ отсутствует,
то код операции меняется.
 

> 
> Вдогонку. Задать номер порта просто как ...AutoRedirect koi8-r 8080
> нельзя, в 28.1 я сделаю эту возможность как AutoRedirect koi8-r :8080
> Ну и в процессе написания этого письма я понял, что если в AutoRedirect
> задан префикс директории, то с URL типа /~user/ это будет неправильно
> работать. Кстати, ваше rewriterule тоже на них будет обламываться :)
А чем определяется ':' 

Вместо:
  if(*prefix == ':')
    {
      /* only port */
      redir->port = atoi(prefix+1);
      return redir->port ? 1: 0;
    }

вполне сработает:

  if( (redir->port = atoi(prefix)) != 0 )
      return redir->port ? 1: 0;      /* only port */

Порт равны 0 вроде нонсенс.

  
-- 
                      С наилучшими пожеланиями, Евгений Бырганов.
                      Best regards, Eugene Byrganov.

  mailto:E.B.Byrganov@inp.nsk.su
  work - http://www.inp.nsk.su/





Спонсоры сайта:

[ Russian Apache ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"Russian Apache" includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/) See Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C) 1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.