Как я могу поменять параметры URL и отказаться от других с помощью mod_rewrite? - PullRequest
0 голосов
/ 16 февраля 2011

Мне нужно перенаправить упрощенное:

/search.html?param1=val1&param2=val2&param3=val3&location=UK

Кому:

/search/United-Kingdom/arg4=val2&arg5=val1

Параметры могут быть в любом порядке или отсутствовать, местоположение - это код с расширениями в файле карты (Великобритания, Великобритания и т. Д.).

Если нет подходящих параметров, перенаправить на:

/search-info/

Текущий код для расширения местоположения:

RewriteMap location_map txt:/path/to/locations_map.txt
RewriteCond %{REQUEST_URI} .*search.html.* [NC]
RewriteCond %{QUERY_STRING} .*location=([^&]+).* [NC]
RewriteCond ${location_map:%1} ^(.*)$
RewriteRule ^(.*)$ /search/%1/ [R=301]

Как я могу поменять имена параметров и отбросить ненужные параметры (т.е. пункт 3 выше)?

1 Ответ

1 голос
/ 16 февраля 2011

Это сработало бы, если бы не требовалось изменить порядок параметров. Вы не можете сделать заказ постоянным?

RewriteMap location_map txt:/path/to/locations_map.txt
RewriteCond %{REQUEST_URI} /search.html [NC]
RewriteCond %{QUERY_STRING} (param1=(.+?)&)?(param2=(.+?)&)?(param3=(.+?)&)?location=(.+?) [NC]
RewriteRule ^(.*)$ /search/${location_map:%7}/?arg4=%4&arg5=%2 [R=301,last]

RewriteCond %{REQUEST_URI} /search.html [NC]
RewriteRule / /search-info/ [last]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...