У вас есть для использования mod_rewrite (он должен быть установлен и включен) как вы не можете сопоставить строку запроса с использованием директив Redirect
, к сожалению - mod_rewriteявляется единственным известным мне выбором (если вы не готовы сделать это в своем коде PHP / ASP / etc).
# enable rewrite engine
Options +FollowSymLinks
RewriteEngine On
# the actual rule
RewriteCond %{QUERY_STRING} ^id=1$
RewriteRule ^cat/$ http://domain.com/catalog/180/? [R=301,L]
?
в конце нового URL используется для отмены текущего запросастрока.Без него новый URL будет выглядеть как http://domain.com/catalog/180/?id=1
, а вы этого не хотите.
Приведенное выше правило предназначено для размещения в .htaccess в корневой папке веб-сайта (если он размещен в другом месте, может потребоваться небольшая настройка).) и будет соответствовать /cat/?id=1
ТОЛЬКО.
Если вы хотите сопоставить этот URL с немного другой строкой запроса (например, присутствует дополнительный параметр - например, некоторая информация отслеживания / реферала: /cat/?id=1&source=sidebanner
), используйте это правило:
RewriteCond %{QUERY_STRING} (^|&)id=1(&|$)
RewriteRule ^cat/$ http://domain.com/catalog/180/? [R=301,L]
Такой дополнительный параметр строки запроса source=sidebanner
будет отброшен во время перенаправления (из-за ?
- см. оригинальное объяснение выше).