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] BUG REPORT



Hi!

>  alr> RewriteEngine on
>  alr> RewriteRule ^/rus/(.*)      /$1 [PT,E=FORCE_CHARSET:koi8-r,L]
> Если не сложно, проведите исследование на тему "как там оно происходит на самом 
> деле" (с RUSSIAN_APACHE_DEBUG), хорошо ?
> Т.е. приходит ли FORCE_CHARSET куда надо, а если нет, то почему :)
> 
>  alr> и как видим User-Agent перебил FORCE_CHARSET, но если явно указать
>  alr> index.html, то все нормально.
> Я боюсь, что проблема тут связана с тем, что при обращении к /dir/ происходит
> internal redirect к /dir/index.html и FORCE_CHARSET теряется
Да, повидимому, вот кусок вывода printenv:
CHARSET = windows-1251<BR>
CHARSET_DETERMINED_BY = UserAgent<BR>
REDIRECT_CHARSET = koi8-r<BR>
REDIRECT_CHARSET_DETERMINED_BY = EnvVariable<BR>
REDIRECT_CHARSET_HTTP_METHOD = http://<BR>
REDIRECT_CHARSET_SERVER_NAME = Sky.inp.nsk.su:8880<BR>
REDIRECT_CHARSET_SERVER_PORT = 8880<BR>
REDIRECT_FORCE_CHARSET = koi8-r<BR>
REDIRECT_SCRIPT_URI = http://Sky.inp.nsk.su/rus/<BR>
REDIRECT_SCRIPT_URL = /rus/<BR>
REDIRECT_SOURCE_CHARSET = koi8-r<BR>
REDIRECT_STATUS = 200<BR>

А просто FORCE_CHARSET уже нет, что же делать? Ведь редиректы могут
быть по самым разным случаям? 
Вот на всякий случай лог:

=======================================================================
mod_charset.c(2448): Entering mod-charset handler, URI: / FILENAME: /usr/Apache/htdocs ARGS: (null) PATH_INFO: / MIMETYPE: httpd/unix-directory FLAGS: 0 SUBREQ: NO, REDIR: NO
mod_charset.c(2491): mod_charset handler continues
mod_charset.c(2517): mod_charset handler after redirect tests
mod_charset.c(2723): mod_charset: found client charset koi8-r
mod_charset.c(2847): Before subrequests tests: prev=UNSET,main=UNSET,codep=UNSET
mod_charset.c(2861): Continue after redirect test, will-recode=1
mod_charset.c(3007): exiting set_charset (after subrequest tests): URI: / FILENAME: /usr/Apache/htdocs ARGS: (null) PATH_INFO: / MIMETYPE: httpd/unix-directory FLAGS: 1112 SUBREQ: NO
mod_charset.c(2448): Entering mod-charset handler, URI: /printenv.cgi FILENAME: /usr/Apache/htdocs/printenv.cgi ARGS: (null) PATH_INFO: (null) MIMETYPE: text/plain FLAGS: 0 SUBREQ: YES, REDIR: NO
mod_charset.c(2491): mod_charset handler continues
mod_charset.c(2517): mod_charset handler after redirect tests
mod_charset.c(2723): mod_charset: found client charset koi8-r
mod_charset.c(2847): Before subrequests tests: prev=UNSET,main=SET,codep=UNSET
mod_charset.c(2861): Continue after redirect test, will-recode=1
mod_charset.c(3007): exiting set_charset (after subrequest tests): URI: /printenv.cgi FILENAME: /usr/Apache/htdocs/printenv.cgi ARGS: (null) PATH_INFO: (null) MIMETYPE: text/plain FLAGS: 1112 SUBREQ: YES
mod_charset.c(2448): Entering mod-charset handler, URI: /printenv FILENAME: /usr/Apache/htdocs/printenv.cgi ARGS: (null) PATH_INFO:  MIMETYPE: text/plain FLAGS: 0 SUBREQ: YES, REDIR: NO
mod_charset.c(2491): mod_charset handler continues
mod_charset.c(2517): mod_charset handler after redirect tests
mod_charset.c(2723): mod_charset: found client charset koi8-r
mod_charset.c(2847): Before subrequests tests: prev=UNSET,main=SET,codep=UNSET
mod_charset.c(2861): Continue after redirect test, will-recode=1
mod_charset.c(3007): exiting set_charset (after subrequest tests): URI: /printenv FILENAME: /usr/Apache/htdocs/printenv.cgi ARGS: (null) PATH_INFO:  MIMETYPE: text/plain FLAGS: 1112 SUBREQ: YES
mod_charset.c(2448): Entering mod-charset handler, URI: /printenv.cgi FILENAME: /usr/Apache/htdocs/printenv.cgi ARGS: (null) PATH_INFO: (null) MIMETYPE: text/plain FLAGS: 0 SUBREQ: YES, REDIR: NO
mod_charset.c(2491): mod_charset handler continues
mod_charset.c(2517): mod_charset handler after redirect tests
mod_charset.c(2723): mod_charset: found client charset windows-1251
mod_charset.c(2847): Before subrequests tests: prev=UNSET,main=SET,codep=UNSET
mod_charset.c(2861): Continue after redirect test, will-recode=1
mod_charset.c(3007): exiting set_charset (after subrequest tests): URI: /printenv.cgi FILENAME: /usr/Apache/htdocs/printenv.cgi ARGS: (null) PATH_INFO: (null) MIMETYPE: text/plain FLAGS: 1242 SUBREQ: YES
mod_charset.c(2448): Entering mod-charset handler, URI: /printenv FILENAME: /usr/Apache/htdocs/printenv.cgi ARGS: (null) PATH_INFO:  MIMETYPE: text/plain FLAGS: 0 SUBREQ: NO, REDIR: YES
mod_charset.c(2491): mod_charset handler continues
mod_charset.c(2517): mod_charset handler after redirect tests
mod_charset.c(2723): mod_charset: found client charset windows-1251
mod_charset.c(2847): Before subrequests tests: prev=SET,main=UNSET,codep=UNSET
mod_charset.c(2861): Continue after redirect test, will-recode=1
mod_charset.c(2970): Recoding client data
mod_charset.c(3007): exiting set_charset (after subrequest tests): URI: /printenv FILENAME: /usr/Apache/htdocs/printenv.cgi ARGS: (null) PATH_INFO:  MIMETYPE: text/plain FLAGS: 17626 SUBREQ: NO

=======================================================================
>  alr> 2. Создаем файл вида file.de.html - указав явно язык, и тем не менее он
>  alr> перекодируется (конечно, mod_negotiation работает и язык отдает 'de').
>  alr> Почему, разве не должна делаться проверка языка? Зачем он тогда в
>  alr> CharsetDecl?
> Язык - на будущее, проверка в настоящее время не делается.

...
 
>  alr> И совсем на по следок, ожидается ли появления версии с многими языками?
> Ожидается.... уже несколько лет.
> Основную проблему мы тут уже много раз обсасывали - непонятно как нормально
> ("по человечески") хранить в URL несколько пар язык-кодировка. "нечеловеческое" 
> решение реализовано в Apache-MultiWeb, его нечеловеческость заключается в том, 
> что требуются правки во многих модулях (вроде mod_rewrite)
Alex, по моему ты все усложняешь, для начало нужен пункт 2 + возможность 
установить default для языка. То есть как CharsetSourceEnc, но только
для языка - например AddDefaulLanguage (Пара CharsetByExtension, AddLanguage 
уже есть).

А дальше, уже следуя духу RFC..., строим список по Accept-*, по портам, по
hostname, и т.д. для всех возможных вариантов,
скажем так виртуальные Accept-* лист и уже идя по нему подбираем максимально
близкий вариант Language+Charset с учетом возможного преобразования.
Например: ru -> en ;-)))).

А все проблемы с URL разойдутся сами собой. Все эти 'Portnumber Hostname 
UriHostname EnvVariable Dirprefix Useragent' сильно зависят от контекста,
что лежит в Source.
Например: http://koi.www.../.../test.fr.html - ведь не зависимо от koi.www
нужно отдать как Language=fr, Charset=iso8899-15.



-- 

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

  mailto:E.B.Byrganov@inp.nsk.su
  work - http://www.inp.nsk.su/
=============================================================================
=               Apache-Rus@lists.lexa.ru mailing list                       =
Mail "unsubscribe apache-rus" to majordomo@lists.lexa.ru if you want to quit.
=       Archive avaliable at http://www.lexa.ru/mail-archive                =






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

[ 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.