Изменение значения строки запроса с помощью htacces

#apache #.htaccess #mod-rewrite #url-rewriting #query-string

#apache #.htaccess #mod-переписать #url-переписывание #запрос-строка

Вопрос:

Я хочу перенаправить

https://www.example.com/signup?plan=basic кому https://www.example.com/signup?plan=basic-monthly и https://www.example.com/signup?plan=pro https://www.example.com/signup?plan=pro-monthly кому .

Как я могу добиться этого с помощью htaccess?

Здесь много вопросов, связанных с этим. Но не удалось найти ответ для этого конкретного сценария.

Это код, который я пробовал и потерпел неудачу:

 RewriteCond %{QUERY_STRING} (^|amp;)plan=pro(amp;|$)
RewriteRule ^signup /$0?plan=pro-monthly [R=301,L]
 

Кроме того, при попытке сделать то же самое с «basic» вместо «pro» слово «basic» отображается красным цветом, как будто это ключевое слово.

Комментарии:

1. Не могли бы вы, пожалуйста, поделиться своим файлом правила htaccess в своем вопросе, что вы пробовали, спасибо.

2. Добавлен @RavinderSingh13

3. Ваше правильное правило верно. Можете ли вы опубликовать свой полный. htaccess под вопросом?

Ответ №1:

Не могли бы вы попробовать следующее, написанное с использованием показанных примеров. Пожалуйста, убедитесь, что вы очистили кэш браузера перед тестированием URL-адресов.

 RewriteEngine ON
RewriteCond %{QUERY_STRING} ^(plan=(?:basic|pro))$ [NC]
RewriteRule ^(signup)/?$ $1?%1-monthly [L]
 


2-е решение: или вы тоже можете попробовать следующее. Убедитесь, что вы либо вводите 1-е правила решения, ЛИБО это по одному за раз.

 RewriteEngine ON
RewriteCond %{THE_REQUEST} s/(signup)?(plan=(?:basic|pro))s [NC]
RewriteRule ^ %1?%2-monthly [L]
 

Комментарии:

1. @FathimaLinsaK, Привет, Фатима, не могли бы вы сообщить мне об этом (готовы помочь здесь), спасибо.