LINUX.ORG.RU

Mod_rewrite и два вопросительных знака в URL

 , ,


0

2

Здравствуйте, уважаемые! Необходимо редиректить запросы вида

Osite.ru/anything.php?sub=anything

на

so.kr/index.php?url=http://site.ru/anything.php?sub=anything

(для дальнейшей работы с полученным url).

Главная проблема в необходимом URL - возможное присутствие двух вопросительных знаков. Mod_rewrite, естественно обрабатывает только первый. Например, так:

RewriteCond %{HTTP_HOST} ^(.*)osite\.ru$ [NC]
RewriteRule ^(.*)$ http://so.kr/index.php?url=http://%1site.ru$1 [R=301,L,QSA]

Видя, что в URL уже присутствует знак "?", mod_rewrite подменяет второй вопросительный знак на «&». То есть, URL

Osite.ru/anything.php?sub=anything

редиректится на

so.kr/index.php?url=http://site.ru/anything.php&sub=anything

а надо, как я уже говорил, на:

so.kr/index.php?url=http://site.ru/anything.php?sub=anything

Подскажите, пожалуйста, реально ли решить задачу средствами mod_rewrite? Заранее благодарю за любые подсказки!

Ответ на: комментарий от Kuzz

Попробовал флаг B - ну он кодирует все символы, но вопросительный знак так и остаётся амперсандом.

seventhsite
() автор топика

Знак вопроса отделяет url от query_string, он по-любому должен быть только один. Все остальные надо кодировать

boombick ★★★★★
()
Ответ на: комментарий от boombick

Разве это обязательно? Об этом (о недопустимости второго "?") есть что-нибудь в стандарте?

(Я стандартов не читал, но сейчас просто интересно стало.)

greatperson
()
Ответ на: комментарий от greatperson

Я стандартов не читал

Пришло твоё время.

anonymous
()
Ответ на: комментарий от boombick

Интересно. Ещё бы как-то применить это знание к вопросу...

seventhsite
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.