Deutsch

Задачка

902  1 2 все
voxel3d коренной житель12.08.10 21:52
voxel3d
NEW 12.08.10 21:52 
в ответ femidav 12.08.10 21:42
RewriteRule .* $0? [CO=lang:%1:%{HTTP_HOST},R,L]
Я не понимаю тогда. Url запроса "127.0.0.1/index.xhtml?lang=de" преобразуется к "127.0.0.1/index.xhtml?lang=de?" ? Или оно до параметра только берётся?
Dropbox - средство синхронизации и бэкапа файлов.
#21 
  femidav местный житель12.08.10 22:02
NEW 12.08.10 22:02 
в ответ voxel3d 12.08.10 21:52
В ответ на:
RewriteRule .* $0? [CO=lang:%1:%{HTTP_HOST},R,L]
Я не понимаю тогда. Url запроса "127.0.0.1/index.xhtml?lang=de" преобразуется к "127.0.0.1/index.xhtml?lang=de?" ?

Вопросительный знак поставлен чтобы отсечь параметры. Установить куки, отсечь параметры для красоты, и перенаправить на тот же адрес, чтобы там уже второе правило перенаправило запрос в нужную подпапку. Можно и без этого, но тогда локаль в адресе будет болтаться. То бишь имеем:
127.0.0.1/index.xhtml?lang=de -> 127.0.0.1/index.xhtml? code 302, -> перезапрос 127.0.0.1/index.xhtml -> 127.0.0.1/de/index.xhtml
Пропиши следующее в httpd.conf, виднее будет:
<IfModule rewrite_module>
RewriteLog /path/to/logs/rewrite.log
RewriteLogLevel 2
</IfModule>
#22 
voxel3d коренной житель12.08.10 23:14
voxel3d
NEW 12.08.10 23:14 
в ответ R1111 12.08.10 20:12, Последний раз изменено 12.08.10 23:24 (voxel3d)
В ответ на:
Незнаю зачем такая галимотья.

Это не галимотья, это красивый вариант решающий задачу без лишних сущностей - скриптовых языков.
Dropbox - средство синхронизации и бэкапа файлов.
#23 
voxel3d коренной житель13.08.10 12:53
voxel3d
NEW 13.08.10 12:53 
в ответ femidav 12.08.10 21:42, Последний раз изменено 13.08.10 12:55 (voxel3d)
Нашёл косяк, только не понимаю, чей. Хромиуму при первом заходе, если нет установленной куки, сервер выдёт 500, превышена глубина рекурсии. Оно рекурсивно пытается редиректить начиная с / -> /en/ -> /en/en/ -> ... Возникает только в хроимуме 5.0.375.99 (51029) Ubuntu 10.04. Хром в виндовсе нормально отрабатывает.
Dropbox - средство синхронизации и бэкапа файлов.
#24 
  femidav местный житель13.08.10 14:00
NEW 13.08.10 14:00 
в ответ voxel3d 13.08.10 12:53
На HTTP:Accept-Language цикл? А как выглядит эта строка хедера?
#25 
voxel3d коренной житель13.08.10 14:22
voxel3d
NEW 13.08.10 14:22 
в ответ femidav 13.08.10 14:00, Последний раз изменено 13.08.10 14:24 (voxel3d)
1. Да.
2. Блин, чудеса. Перестало циклиться. Кэш, куки и т.д., ессно, чистил и тогда и сейчас. Сервер рестартил и тогда и щас. Вот кусок лога:
В ответ на:
[Fri Aug 13 12:54:44 2010] [error] [client 192.168.0.11] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalR
ecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
[Fri Aug 13 12:54:44 2010] [debug] core.c(3063): [client 192.168.0.11] r->uri = /en/en/en/en/en/en/en/en/en/en/index.xhtml
[Fri Aug 13 12:54:44 2010] [debug] core.c(3069): [client 192.168.0.11] redirected from r->uri = /en/en/en/en/en/en/en/en/en/index.xhtml
[Fri Aug 13 12:54:44 2010] [debug] core.c(3069): [client 192.168.0.11] redirected from r->uri = /en/en/en/en/en/en/en/en/index.xhtml
[Fri Aug 13 12:54:44 2010] [debug] core.c(3069): [client 192.168.0.11] redirected from r->uri = /en/en/en/en/en/en/en/index.xhtml
[Fri Aug 13 12:54:44 2010] [debug] core.c(3069): [client 192.168.0.11] redirected from r->uri = /en/en/en/en/en/en/index.xhtml
[Fri Aug 13 12:54:44 2010] [debug] core.c(3069): [client 192.168.0.11] redirected from r->uri = /en/en/en/en/en/index.xhtml
[Fri Aug 13 12:54:44 2010] [debug] core.c(3069): [client 192.168.0.11] redirected from r->uri = /en/en/en/en/index.xhtml
[Fri Aug 13 12:54:44 2010] [debug] core.c(3069): [client 192.168.0.11] redirected from r->uri = /en/en/en/index.xhtml
[Fri Aug 13 12:54:44 2010] [debug] core.c(3069): [client 192.168.0.11] redirected from r->uri = /en/en/index.xhtml
[Fri Aug 13 12:54:44 2010] [debug] core.c(3069): [client 192.168.0.11] redirected from r->uri = /en/index.xhtml
[Fri Aug 13 12:54:44 2010] [debug] core.c(3069): [client 192.168.0.11] redirected from r->uri = /index.xhtml

Хедер уже показать не могу.
Dropbox - средство синхронизации и бэкапа файлов.
#26 
  femidav местный житель13.08.10 18:39
NEW 13.08.10 18:39 
в ответ voxel3d 13.08.10 14:22
По идее такое возможно только при отсутствии .htaccess в папке en.
#27 
voxel3d коренной житель13.08.10 18:49
voxel3d
NEW 13.08.10 18:49 
в ответ femidav 13.08.10 18:39
Точно. Видимо я .htaccess не скопировал, когда был косяк, а потом скопировал туда.
Dropbox - средство синхронизации и бэкапа файлов.
#28 
voxel3d коренной житель24.08.10 01:56
voxel3d
NEW 24.08.10 01:56 
в ответ femidav 13.08.10 18:39
Подскажи, как мне заставить работать четыре строки идущие после RewriteBase?
Они меняют mime-тип для ИЕ, чтобы он мог открыть .xhtml файлы. Без каталогов, когда всё в корне лежало, оно работало, сейчас - нет.
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} \.xhtml$
RewriteCond %{HTTP_USER_AGENT} MSIE [OR]
RewriteCond %{HTTP_ACCEPT} application/xhtml\+xml\s*;\s*q=0\.?0*(\s|,|$)
RewriteRule .* - [T=text/html]
RewriteCond %{QUERY_STRING} lang=(en|fr|de)
RewriteRule .* $0? [CO=lang:%1:%{HTTP_HOST},R,L]
RewriteCond %{HTTP_COOKIE} lang=(de|fr|en)
RewriteRule .* %1/$0 [L]
RewriteCond %{HTTP:Accept-Language} ^(en|fr|de).*$
RewriteRule .* %1/$0 [L]
RewriteRule .* fr/$0 [L]
ExpiresActive On
ExpiresDefault "access plus 0 seconds"


Dropbox - средство синхронизации и бэкапа файлов.
#29 
  femidav местный житель24.08.10 02:07
NEW 24.08.10 02:07 
в ответ voxel3d 24.08.10 01:56
А нафига вообще кому-либо посылать application/xhtml+xml?
#30 
voxel3d коренной житель24.08.10 11:09
voxel3d
NEW 24.08.10 11:09 
в ответ femidav 24.08.10 02:07
Ты имеешь в виду выставить принудительно для .xhtml глобально mime-тип text/html или использовать мой xhtml код внутри .html файлов?
Я х.з. - я так и не нашёл нигде информации, в какой режим браузеры заходят в подобных случаях, то ли в нормальном остаются, то ли в режим совместимости.
Dropbox - средство синхронизации и бэкапа файлов.
#31 
  femidav местный житель24.08.10 19:48
NEW 24.08.10 19:48 
в ответ voxel3d 24.08.10 11:09
Я бы поставил глобально text/html и использовал HTML5 (<!doctype html>), что во всех браузерах даёт стандартный режим. А строгий XML-парсинг вроде все равно никто не использует.
#32 
1 2 все