In-Reply-To: <37F7DB5B@lexa.ru> from Alex Tutubalin at "Oct 3, 99 06:40:27 pm"
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" 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.