#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, Привет, Фатима, не могли бы вы сообщить мне об этом (готовы помочь здесь), спасибо.