1

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

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

Перенаправление 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 

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

ответ

2

Попробуйте эти 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 используется для отмены предыдущей строки запроса от цели.
  • ^/?$ является регулярным выражением, чтобы соответствовать только целевой странице.
+1

Бум, СПАСИБО! –

+1

Добро пожаловать, рад, что это сработало. – anubhava