我想使用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=Sydney
和cat=pole
。
正则表达式专家能否请将此示例翻译成正则表达式代码?
我会为不同的where=
和cat=
答案 0 :(得分:0)
由于您需要提取这两个查询参数的值,因此您需要2个捕获组。但是,正则表达式还需要处理不同的查询参数顺序,即cat
和where
顺序可能不同
这是正则表达式 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提供一个大写/小写字符