301 Перенаправление в корневых параметрах запроса

Я пробовал несколько примеров того, как это сделать, но ничего не работает, и я боюсь, что это потому, что строка запроса является частью базового URL-адреса.

Вот что я хотел бы сделать:

Перенаправить http://example.com/?from=TEST_1 -> http://example.com/foo

Перенаправить http://example.com/?from=TEST_2 -> http://example.com/bar

Вот что я пробовал:

RewriteEngine On
RewriteCond %{QUERY_STRING} from=TEST_1
RewriteRule (.*) /foo [L,R=301]

К сожалению, приведенное выше правило не действует. Если я изменю правило на что-то статичное (см. ниже), оно отлично сработает:

Redirect 301 /foo /bar

Есть ли что-то особенное, что мне нужно сделать, чтобы проверить значение строки запроса, когда оно является частью запроса корневого домена?


person Nicholas Kreidberg    schedule 13.01.2015    source источник


Ответы (1)


Попробуйте эти 2 правила в качестве первых правил чуть ниже RewriteEngine строки.

RewriteEngine On

RewriteCond %{QUERY_STRING} ^from=TEST_1$
RewriteRule ^/?$ /foo? [L,R=301]

RewriteCond %{QUERY_STRING} ^from=TEST_2$
RewriteRule ^/?$ /bar? [L,R=301]
  • ? в конце целевого URI используется для удаления предыдущей строки запроса из целевого.
  • ^/?$ — это регулярное выражение, соответствующее только целевой странице.
person anubhava    schedule 13.01.2015