Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Глючное RewriteRule  (Прочитано 15017 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dracul
Помогающий

ru
Offline Offline
Пол: Мужской

« : 04-03-2007 16:32 » 

Есть странный глюк.
Имееться правило:
RewriteRule ^(.{2})$ index.php?_lng=$1 [QSA]
По идее, строка адреса вида: /ru должна приобразовываться в /index.php?_lng=ru, однако почему то на практике превращаеться в /ru/?_lng=ru

Из-за чего может возникать данная проблема и как от нее можно исбавиться?

Вот содержимое .htaccess
Код:
RewriteEngine On

RewriteBase /

# основное правило
RewriteRule ^(.{2})/$ index.php?_lng=$1 [QSA]
RewriteRule ^(.{2})$ index.php?_lng=$1 [QSA]
RewriteRule ^(.{2})/([^.]+)$ index.php?_go_var_=$2&_lng=$1 [QSA]
RewriteRule ^([^.]+)$ index.php?_go_var_=$1 [QSA]

# правила по умолчанию
RewriteRule ^$ index.php [QSA]
RewriteRule ^index.html$ index.php [QSA]
RewriteRule ^index.htm$ index.php [QSA]

# правила, для картинок
RewriteRule ^([^.]+)realty/foto/(.{3})/([^.]+).jpg$ script.php?go=echo_foto&table=realty_foto&id=$3&rasmer=$2 [QSA]
Записан
Dracul
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 04-03-2007 16:36 » 

Вообще у меня такое впечатление, что апач не передает параметры PHP, а делает редирект, скажем с адреса domen.com/ru на domen.com/ru/?_lng=ru
остальные правила вроде не глючат....
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 05-03-2007 06:42 » 

Цитата
Given Rule                                      Resulting Substitution
----------------------------------------------  ----------------------------------
^/somepath(.*) otherpath$1                      not supported, because invalid!

^/somepath(.*) otherpath$1  [R]                 not supported, because invalid!

^/somepath(.*) otherpath$1  [P]                 not supported, because invalid!
----------------------------------------------  ----------------------------------
^/somepath(.*) /otherpath$1                     /otherpath/pathinfo

^/somepath(.*) /otherpath$1 [R]                 http://thishost/otherpath/pathinfo
                                                via external redirection

^/somepath(.*) /otherpath$1 [P]                 not supported, because silly!
----------------------------------------------  ----------------------------------
^/somepath(.*) http://thishost/otherpath$1      /otherpath/pathinfo

^/somepath(.*) http://thishost/otherpath$1 [R]  http://thishost/otherpath/pathinfo
                                                via external redirection

^/somepath(.*) http://thishost/otherpath$1 [P]  not supported, because silly!
----------------------------------------------  ----------------------------------
^/somepath(.*) http://otherhost/otherpath$1     http://otherhost/otherpath/pathinfo
                                                via external redirection

^/somepath(.*) http://otherhost/otherpath$1 [R] http://otherhost/otherpath/pathinfo
                                                via external redirection
                                                (the [R] flag is redundant)

^/somepath(.*) http://otherhost/otherpath$1 [P] http://otherhost/otherpath/pathinfo
                                                via internal proxy

Цитата
qsappend|QSA' (query string append)
This flag forces the rewriting engine to append a query string part in the substitution string to the existing one instead of replacing it. Use this when you want to add more data to the query string via a rewrite rule.
« Последнее редактирование: 05-03-2007 06:45 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dracul
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 05-03-2007 14:41 » 

Так ничего понять и не могу.... вообще загадочно все как-то, на другом домене, тот же самый  .htaccess с теми же правилами и все работает без каких либо проблем, без сучка и задоринки... тут же какие то глюки....
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 05-03-2007 17:42 » 

Dracul, сам видишь - цитата из мануала. Если где-то что-то работает не по ману, то это вовсе не гуд, а означает или различные версии ПО, или случайное совпадение параметров.

Приведенный ман - от Апача 1.3.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dracul
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 06-03-2007 05:04 » 

То есть это глюк сервера? Я хостеру это уже заявлял, но они говорят, что виноваты руки, мол, мои корявые, а не они.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 06-03-2007 08:33 » 

Dracul, верно говорят. Прочти мои цитаты и подумай о том, что ты получаешь.

Обрати внимание на QSA - прочти описание еще раз.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Peter
Гость
« Ответ #7 : 14-01-2009 13:24 » 

Уважаемые колеги подскажите - где найти что-нибудь очитать про QSA???
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 14-01-2009 13:26 » 

самое последнее
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Peter
Гость
« Ответ #9 : 14-01-2009 13:36 » 

Большое спасибо, однако учитывая издержки в моём образовании хотелось бы почитать хоть и не самое последнее, но на русском...
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 14-01-2009 13:45 » 

мне проще перевести
'qsappend|QSA'
указывает механизму преобразований на добавление, а не замену, строки запроса из URL к существующей, в строке подстановки. Используйте это когда вы хотите добавлять дополнительные данные в  строку запроса


а вот нашел почти слово в слово Улыбаюсь

http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html
« Последнее редактирование: 14-01-2009 13:47 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 14-01-2009 13:46 » new

Эта опция не поменялась с 1.3 - описание слово в слово. Т.ч. приведенная мной выше цитата по прежнему актуальна.

Смысл текста прост: с этой опцией происходит не замена, а добавление в конец.

Цитата
RewriteRule Directive

......

Modifying the Query String

By default, the query string is passed through unchanged. You can, however, create URLs in the substitution string containing a query string part. Simply use a question mark inside the substitution string to indicate that the following text should be re-injected into the query string. When you want to erase an existing query string, end the substitution string with just a question mark. To combine new and old query strings, use the [QSA] flag.
« Последнее редактирование: 14-01-2009 13:48 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines