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

Пример фрагмента, показывающего, как перенаправить с одного 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. Потратьте немного времени на изучение логики, использованной в этом фрагменте.

Конечно, это всего лишь пример, демонстрирующий технику. Поскольку вы, несомненно, будете использовать другие параметры, вам нужно будет соответствующим образом изменить код. И, как всегда, не забывайте хорошо тестировать.

Оцените статью
devanswers.ru
Добавить комментарий