Правило перенаправления htaccess для нескольких параметров URL

Мне нужно получить редирект с помощью htaccess

From: http://example.com/go/zaym?source=`PARAM1`&keyword=`PARAM2` но если нет параметров URL, мне также нужно получить перенаправление с пустыми параметрами

Кому: другой домен http://example2.com/sub_id=PARAM`&sub_id2=PARAM2

Поэтому мне нужно переместить значение source в sub_id, а значение keyword в sub_id2.

Я пытаюсь так, но это не работает:

RewriteCond %{QUERY_STRING} ^source=([^&]+)&keyword=([^&]+)$
RewriteRule ^go/zaym http://example2.com/sub_id=%1&sub_id2=%2 [R,L]

Когда ваш предыдущий вопрос (stackoverflow.com/questions/65224714) был закрыт, это не означает, что вы должны опубликовать то же самое снова без каких-либо существенных изменений. Этот сайт не является службой написания кода, всегда ожидается, что вы сначала сделаете попытку сами. Покажите нам это и вместе с этим дайте нам правильное описание проблемы.

CBroe 10.12.2020 10:39

Если вам что-то непонятно в том, что этот сайт не является сервисом написания кода, то, пожалуйста, прочитайте Как спросить.

CBroe 10.12.2020 10:42

человек ... прочитайте другие вопросы о перенаправлении с использованием htaccess. Больше ничего добавить не могу, так как все равно 500 ошибка

Артём Данилов 10.12.2020 10:45

«Больше ничего не могу добавить» — можно добавить то, что пробовали, в первую очередь. «потому что в любом случае это ошибка 500» — тогда проверьте, что написано в журнале ошибок.

CBroe 10.12.2020 10:53

добавил, как я пытался

Артём Данилов 10.12.2020 10:56

Согласно htaccess.madewithlove.be?share=0db5acd9-b2cc-4c9d-9fb5-ede58‌​2f4…, это должно перенаправить вас на http://example2.com/sub_id=%60PARAM1%60PARAM26sub_id2=PARAM2‌​?source=%60PARAM1%60‌​&keyword=PARAM2 - вы действительно хотите перенаправить на путь sub_id=PARAM&sub_id2=PARAM2, или это действительно должно было быть строкой запроса?

CBroe 10.12.2020 10:59

ссылка у меня не работает. Мне нужно передать только sub_id и sub_id2, без источника и ключевого слова.

Артём Данилов 10.12.2020 11:02

«без источника и ключевого слова» — передаются, потому что берется исходная строка запроса, если вы не укажете новую. Вот почему я спросил вас, действительно ли вы хотите, чтобы sub_id=%60PARAM1%60PARAM26sub_id2=PARAM2 был частью пути нового URL. Согласно вашему комментарию под ответом Равиндера, вы не ... но вместо того, чтобы ответить на этот простой вопрос, вы просто игнорируете его. И ваше описание проблемы не отражает того, чего вы на самом деле хотели в первую очередь.

CBroe 10.12.2020 11:14

хорошо, но теперь вы понимаете. У вас есть решение?

Артём Данилов 10.12.2020 11:32
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
9
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

РЕДАКТИРОВАТЬ (более общий способ): с более общим способом в соответствии с комментарием OP можно попробовать следовать, где нет жесткого кодирования строк keyword или source, а затем попробовать следовать.

Только с проверкой условия строки запроса:

RewriteEngine ON
RewriteCond %{QUERY_STRING} ^[\w-]+=(.*)(?!=&)$ [NC]
RewriteRule ^(.*)$ http://example2.com%{REQUEST_URI}?sub_id=%1 [NE,L]

RewriteCond %{QUERY_STRING} ^[\w-]+=([^&]*)&[\w-]+=(.*)$ [NC]
RewriteRule ^(.*)$ http://example2.com%{REQUEST_URI}?sub_id=%1&sub_id2=%2 [NE,L]

RewriteCond %{QUERY_STRING} ^$
RewriteCond %{REQUEST_URI} ^/go/zaym/?$ [NC]
RewriteRule ^ http://example2.com%{REQUEST_URI} [L]

С условием строки запроса URI +:

RewriteEngine ON
RewriteCond %{QUERY_STRING} ^[\w-]+=(.*)(?!=&)$ [NC]
RewriteCond %{REQUEST_URI} ^/go/zaym/?$ [NC]
RewriteRule ^(.*)$ http://example2.com%{REQUEST_URI}?sub_id=%1 [NE,L]

RewriteCond %{REQUEST_URI} ^/go/zaym/?$ [NC]
RewriteCond %{QUERY_STRING} ^[\w-]+=([^&]*)&[\w-]+=(.*)$ [NC]
RewriteRule ^(.*)$ http://example2.com%{REQUEST_URI}?sub_id=%1&sub_id2=%2 [NE,L]
 
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{REQUEST_URI} ^/go/zaym/?$ [NC]
RewriteRule ^ http://example2.com%{REQUEST_URI} [L]

это хорошая идея, но что, если я не знаю некоторых параметров? это может быть что-то вроде mydomain.com/go/zaym?keyword=2&SOMETHINGIDONTKNOW=1111, но мне нужно получить перенаправление на example2.com?sub_id=2 БЕЗ параметров, которые я не знаю. Или просто mydomain.com?something=dontknow to example2.com

Артём Данилов 10.12.2020 12:43

@АртёмДанилов, пожалуйста, проверьте мой более общий ответ один раз и дайте мне знать, я надеюсь, что на этот раз у нас все будет ХОРОШО :)

RavinderSingh13 10.12.2020 12:49

Я использую ваш второй код: «С URI + условие строки запроса:», и когда я набираю mydomain.ru/go/zaym/keyword=3&a=1, я получаю example2.com/?sub_id=

Артём Данилов 10.12.2020 13:25

@АртёмДанилов, хорошо, я добавил (?!=&) в состояние, не могли бы вы проверить сейчас один раз и дайте мне знать тогда.

RavinderSingh13 10.12.2020 13:40

хорошо, это работает идеально. большое спасибо за ваше время

Артём Данилов 10.12.2020 13:47

@АртёмДанилов, о боже, СЛАВА БОГУ, мое предложение сработало :) Удачи и счастливого обучения на этом замечательном сайте.

RavinderSingh13 10.12.2020 13:48

Другие вопросы по теме