Мне нужно получить редирект с помощью 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]
Если вам что-то непонятно в том, что этот сайт не является сервисом написания кода, то, пожалуйста, прочитайте Как спросить.
человек ... прочитайте другие вопросы о перенаправлении с использованием htaccess. Больше ничего добавить не могу, так как все равно 500 ошибка
«Больше ничего не могу добавить» — можно добавить то, что пробовали, в первую очередь. «потому что в любом случае это ошибка 500» — тогда проверьте, что написано в журнале ошибок.
добавил, как я пытался
Согласно htaccess.madewithlove.be?share=0db5acd9-b2cc-4c9d-9fb5-ede582f4…, это должно перенаправить вас на http://example2.com/sub_id=%60PARAM1%60PARAM26sub_id2=PARAM2?source=%60PARAM1%60&keyword=PARAM2
- вы действительно хотите перенаправить на путь sub_id=PARAM&sub_id2=PARAM2
, или это действительно должно было быть строкой запроса?
ссылка у меня не работает. Мне нужно передать только sub_id и sub_id2, без источника и ключевого слова.
«без источника и ключевого слова» — передаются, потому что берется исходная строка запроса, если вы не укажете новую. Вот почему я спросил вас, действительно ли вы хотите, чтобы sub_id=%60PARAM1%60PARAM26sub_id2=PARAM2
был частью пути нового URL. Согласно вашему комментарию под ответом Равиндера, вы не ... но вместо того, чтобы ответить на этот простой вопрос, вы просто игнорируете его. И ваше описание проблемы не отражает того, чего вы на самом деле хотели в первую очередь.
хорошо, но теперь вы понимаете. У вас есть решение?
РЕДАКТИРОВАТЬ (более общий способ): с более общим способом в соответствии с комментарием 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
@АртёмДанилов, пожалуйста, проверьте мой более общий ответ один раз и дайте мне знать, я надеюсь, что на этот раз у нас все будет ХОРОШО :)
Я использую ваш второй код: «С URI + условие строки запроса:», и когда я набираю mydomain.ru/go/zaym/keyword=3&a=1, я получаю example2.com/?sub_id=
@АртёмДанилов, хорошо, я добавил (?!=&)
в состояние, не могли бы вы проверить сейчас один раз и дайте мне знать тогда.
хорошо, это работает идеально. большое спасибо за ваше время
@АртёмДанилов, о боже, СЛАВА БОГУ, мое предложение сработало :) Удачи и счастливого обучения на этом замечательном сайте.
Когда ваш предыдущий вопрос (stackoverflow.com/questions/65224714) был закрыт, это не означает, что вы должны опубликовать то же самое снова без каких-либо существенных изменений. Этот сайт не является службой написания кода, всегда ожидается, что вы сначала сделаете попытку сами. Покажите нам это и вместе с этим дайте нам правильное описание проблемы.