Пример фрагмента, показывающего, как перенаправить с одного URL на другой, изменив только один параметр в строке запроса. Это тонкая, но часто используемая техника, особенно в области SEO, где URL часто меняются для оптимизации структуры, ключевых слов и т.д.
Настройка
Итак, вот сценарий. У нас есть URL с такой структурой:
/cgi-bin/weather/weather.cgi?forecast=zandh&pands=27514&Submit=GO
… и цель — перенаправить их все на URL с такой структурой:
/cgi-bin/weather/weather.cgi?forecast=avnmos&pands=27514&Submit=GO
Заметили разницу? Мы меняем параметр zandh
на avnmos
. Все остальное в URL должно остаться неизменным.
Решение
Вот как выполнить это перенаправление, используя mod_rewrite
от Apache. Вы можете поместить этот код в корневой .htaccess вашего сайта или в файл конфигурации сервера:
# parameter redirect
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} /cgi-bin/weather/weather.cgi [NC]
RewriteCond %{QUERY_STRING} (forecast=)(zandh)(&pands=)([0-9]+)(&Submit=GO) [NC]
RewriteRule .* /cgi-bin/weather/weather.cgi?%1avnmos%3%4%5 [R=301,L]
</IfModule>
Хитрость здесь заключается в том, чтобы подобрать каждый из скобочных аргументов (например, (forecast=)
, (zandh)
и т.д.) к соответствующим представлениям (например, %1
, %2
и т.д.) в RewriteRule
. Потратьте немного времени на изучение логики, использованной в этом фрагменте.
Конечно, это всего лишь пример, демонстрирующий технику. Поскольку вы, несомненно, будете использовать другие параметры, вам нужно будет соответствующим образом изменить код. И, как всегда, не забывайте хорошо тестировать.