Я пытаюсь создать внешнее перенаправление, которое включает несколько конкретных задач.
- Если в URL-адресе найдено конкретное значение строки запроса, выполните перенаправление.
- При перенаправлении замените одно из имен параметров строки запроса, но не его значение.
- Если № 1 ложно, игнорируйте перезапись и продолжайте
Пример: у меня есть URL http://foobar.com/?a=123&b=456&c=blah
Во-первых, если параметр c = blah
, перенаправить на http://barfoo.com/
Во-вторых, замените параметр a
на параметр x
, чтобы конечный URL-адрес был http://barfoo.com/?x=123&b=456&c=blah
Ниже приведены мои наилучшие предположения после изучения http://mod-rewrite-cheatsheet.com/ и Скрытые функции mod_rewrite
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.foobar\.com$ [NC]
RewriteCond %{QUERY_STRING} ^a=(.*)&b=(.*)&c=blah$ [NC]
RewriteRule ^(.*)$ http://barfoo.com/?x=%1&b=%2&c=blah [NC,L,QSA,R=301]
Однако URL-адрес добавляет строку запроса, а не заменяет ее.
Меня перенаправляют на http://barfoo.com/?x=123&b=456&c=blah&a=123&b=456&c=blah