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

seventh

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

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
редиректится на

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

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

fixxxer

К.О.
Партнер клуба
Во-первых, тебе надо хотеть, чтобы получилась не та ерунда, которую ты хочешь, а вот так:

so.kr/index.php?url=http%3A%2F%2Fsite.ru%2Fanything.php%3Fsub%3Danything

Во-вторых, что естественно, QSA тебе не поможет. Я апача не видел больше 10 лет, читай в документации, как вытащить аргументы query string в переменные. Вот первая попавшаяся ссылка: http://statichtml.com/2010/mod-rewrite-baseon-on-query-string.html
 

seventh

Новичок
надо хотеть, чтобы получилась не та ерунда, которую ты хочешь, а вот так:
so.kr/index.php?url=http%3A%2F%2Fsite.ru%2Fanything.php%3Fsub%3Danything
Вот так легко получается, если добавить флаг "B". Только второй вопросительный знак при этом всё равно становится амперсандом.
А если убрать QSA, то все переменные из URL, естественно, вовсе пропадают.
И обрабатывать каждую переменную, как это предлагается по вашей ссылке, я не могу, поскольку их [переменных] великое множество и они могут быть, а могут и не быть совсем. Поэтому единственный для меня вариант передавать as is - как вошло, так должно и выйти. Один в один. Что бы там ни было.
 

AnrDaemon

Продвинутый новичок
Ну и передавай. Через PHP. Или поставь другой сервер. Но код всё равно придётся писать. Не на PHP, так на Lua или Perl.
 

fixxxer

К.О.
Партнер клуба
ай, ну если тебя так устраивает, добавь ? в свой урл перед $1, лишний амперсанд роли не играет
 
Сверху