nginx使用地图重定向多个URL

阿努加加(Anuj gakhar)

我正在尝试使用map指令将一堆旧URL重定向到新的URls中。我能够执行简单的操作,但是有点卡在查询参数上。

我需要这样做

/people.php?personid=20 -> /people/20
/events.php/eventid=20 -> /event/20
/info.php?name=john&age=20 -> /person/john/20

我有一个地图指令

map $request_uri $redirected_uri {
~^people.php\?personid=(.*)^ /people/$1?;
}

但似乎不起作用。任何帮助,将不胜感激。提前致谢。

我的服务器块具有此代码

if ($redirected_uri) {
   rewrite  ^ $redirected_uri permanent;
}

另外,我正在尝试执行以下操作以及将/ people / 20改写回people.php?personId = 20所以,为此

map $request_uri $new_uri {
default 0
~^/people/(.*) /people.php?personId=$1;
}

然后在服务器块中

if ($new_uri) {
rewrite ^ $new_uri last; // this doesn't work, throws 404
}
理查德·史密斯

一旦计算出另一个正则表达式,数字捕获就会超出范围,因此该rewrite语句本身会抹除$1一条语句的值map

您可以return改为使用以下语句:

if ($redirected_uri) {
    return 301 $redirected_uri;
} 

或更妙的是,在中使用命名捕获map

map $request_uri $redirected_uri {
~^/people\.php\?personid=(?<personid>.*)$ /people/$personid;
}

另请注意,Nginx URI以开头开始/,您没有转义.,并且正则表达式结尾的正确锚点是$

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Nginx中使用参数重定向URL

来自分类Dev

使用.htaccess的多个URL重定向

来自分类Dev

使用DotNetOpenAuth的多个重定向URL

来自分类Dev

Java:Android:用例:何时使用地图视图以及何时重定向到地图应用程序?

来自分类Dev

跨多个对象使用地图

来自分类Dev

URL重定向的Nginx规则

来自分类Dev

nginx:URL不会重定向

来自分类Dev

如何使用Nginx重定向编码的URL Slug

来自分类Dev

301使用.htaccess使用多个URL重定向

来自分类Dev

使用.htaccess从多个具有语言的URL重定向

来自分类Dev

如何使用.htaccess正确重定向多个URL

来自分类Dev

如何使用.htaccess正确重定向多个URL

来自分类Dev

使用多个子文件夹重定向URL

来自分类Dev

如何使用Apache重定向多个动态URL

来自分类Dev

WP重定向插件,使用多个查询字符串重定向URL

来自分类Dev

Nginx代理重定向而不更改URL

来自分类Dev

Nginx重定向某些URL(返回404)

来自分类Dev

nginx url重写(无重定向)

来自分类Dev

在Nginx中无法重定向URL

来自分类Dev

Nginx代理重定向而不更改URL

来自分类Dev

Nginx重定向取决于URL参数

来自分类Dev

用于重定向URL的Nginx配置

来自分类Dev

使用(括号)重定向URL

来自分类Dev

使用htaccess重定向URL

来自分类Dev

使用(括号)重定向URL

来自分类Dev

使用 /?1 重定向 URL

来自分类Dev

HTaccess如何重定向多个URL?

来自分类Dev

Laravel中的多个动态URL重定向

来自分类Dev

多个URL参数的htaccess重定向规则