我根据URI中的内容从domain1重定向到domain2,但我只需要将最后一个路径组件的第一部分传递到domain2。
要重定向的主要入口点是:
https://www.domain1.com/us/type-a-products/**9011 HWD螺栓新**
新终点:
https://www.domain2.com/us-us/type-a-products/**9011**
所以我只需要考虑在第一个hypen(基本上是产品代码(之前的最后一个组件的第一部分。
重定向很容易做到:
if ($request_uri ~* "([^/]*$)" ) {
set $last_path_component $1;
}
location ~ /us/type-a-products/(.*) {
return 301 https://www.domain2.com/us-us/type-a-products/$1;
}
但是,我怎么能只考虑最后一个路径组件的第一部分(尝试了不同的regexs,但我只提取了最后一个连字符之后的单词(。
任何帮助都将不胜感激!
一个很好的地方是在地图中。它发生在nginx周期的早期,不会通过引入regex位置。
服务器配置之外
map $uri $redirect_id_uri {
~^/us/type-a-products/**(?<id>d+)-.***$ https://www.domain2.com/us/type-a-products/**$id**;
}
内部服务器配置
if ($redirect_id_uri) {
return 301 $redirect_id_uri;
}
您可以使用
([^/-]+)[^/]*$
请参阅regex演示详细信息:
([^/-]+)
-组1:除/
和-
之外的任何一个或多个字符[^/]*
-除/
之外的任何零个或多个字符$
—字符串结束