如何匹配Wordpress重定向插件的一个URL中的2个查询字符串

时间:2016-02-25 08:13:00

标签: regex wordpress redirect query-string

我想使用WordPress的'重定向'插件将搜索网址重定向到更干净的网址。

Redirection插件的源URL接受正则表达式。

我需要的一个例子:

我需要这个搜索网址:

http://www.danceclass.es/?s=&where=Sydney+%28Australia%29&company_category=pole&cat=pole&search_simple=STEP+3+-+Show+details

重定向到:

http://www.danceclass.es/pole-sydney

但仅限于where=Sydneycat=pole

正则表达式专家能否请将此示例翻译成正则表达式代码?

我会为不同的where=cat=

进行冲洗和重复

1 个答案:

答案 0 :(得分:0)

由于您需要提取这两个查询参数的值,因此您需要2个捕获组。但是,正则表达式还需要处理不同的查询参数顺序,即catwhere顺序可能不同

这是正则表达式 https://regex101.com/r/gP9pZ0/1

您可以使用捕获的组来构建新网址,使用sed替换命令的示例:

$sed -r 's@^.*where=([a-zA-Z]*).*cat=([^&]*).*|.*cat=([^&]*).*where=([a-zA-Z]*).*$@http://www\.danceclass\.es/\2\3-\1\4@'
http://www.danceclass.es/?s=&where=Sydney+%28Australia%29&company_category=pole&cat=pole&search_simple=STEP+3+-+Show+details
http://www.danceclass.es/pole-Sydney
http://www.danceclass.es/?s=&company_category=pole&cat=pole&search_simple=STEP+3+-+Show+details&where=Sydney+%28Australia%29
http://www.danceclass.es/pole-Sydney
$

一旦您获得了最终的URL,就可以使字符串小写符合您的答案。给sed的2个输入有不同的顺序,即第一个URL有where然后是cat,第二个URL的顺序是反向的

无需迭代不同的值,您可以根据正则表达式中提到的有效字符进行匹配,即:

cat=[^&] cat值将为您提供每个字符,直到它找不到&
where=[a-zA-Z]其中value将为每个char提供一个大写/小写字符