Недавно возникла необходимость выполнить переадресацию URL с параметрами /index.html?page=cat&id=1 на /store/products/cat1.html Я создал такие правила mod_rewrite, чтобы сделать это:

RewriteCond %{REQUEST_URI} ^/index\.html
RewriteCond %{QUERY_STRING} page=cat&id=1
RewriteRule ^(.*)$ http://%{HTTP_HOST}/store/products/cat1.html [L,QSA,R=301]

В данном примере мы проверяем, что страница, на которую пытался перейти пользователь index.html Параметры запроса в QUERY_STRING содержат искомые значения page=cat&id=1 Производим переадресацию на /store/products/cat1.html

Расшифровка RewriteRule параметов

  • L - правило последнее т.е. после него не обрабатывать остальные правила mod_rewrite
  • QSA - означает добавить оригинальное значение QUERY_STRING на страницу /store/products/cat1.html
  • R=301 - означает Permanent redirect - URL перемещен на постоянной основе