我需要重定向简化:
/search.html?param1=val1¶m2=val2¶m3=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)?
答案 0 :(得分:1)
如果不是变化的参数订单要求,这将有效。你不能让订单不变吗?
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]