【问题标题】:Nginx redirect dynamic URLs one path to anotherNginx 将动态 URL 重定向到另一个路径
【发布时间】:2020-06-28 05:34:19
【问题描述】:

我想检查一个参数是否存在于 nginx 的 url 中,然后重写。我该怎么做?

URL 中的颜色是动态的

例如

  1. 如果 url 是 http://website.com/lunch-box/xxxxxabc,则将用户重定向到 http://website.com/lunch-box/

  2. 如果 URL 是 http://website.com/lunch-box/xxxxxabc/ABCD123 则无需重定向。需要按原样加载。

如果 URL 匹配,我想重定向。而xxxxxabc 是动态文本。

nginx version: nginx/1.16.1

【问题讨论】:

  • 我错过了什么吗?这不是一个参数(GET/POST),你的第二个项目符号指向它本身。也许你想要RewriteRule /lunch-box/([^/]+)/(.*) /lunch-box/script.cgi?color=$1&extra=$2
  • @AdamKatz,我不想要颜色和额外的参数。我想在没有查询字符串的情况下重定向。
  • 好的,我看到你已经解决了这个问题。这似乎足以产生答案。见下文。

标签: regex nginx url-rewriting


【解决方案1】:
# rewrite direct children of /lunch-box but not grandchildren+
rewrite  ^(/lunch-box/)[^/]+/?$  $1  last;

遍历正则表达式^(/lunch-box/)[^/]+/?$

  • ^ 匹配字符串的开头(rewrite 规则匹配路径,而不是完整的 URI)
  • (/lunch-box/) 匹配文字文本 /lunch-box/ 并将其保存为 $1
  • [^/]+ 匹配一个或多个不是正斜杠的字符
  • /? 匹配零个或一个正斜杠
  • $ 匹配字符串的结尾

这会去掉我们保存为 $1 的路径,但前提是该路径是直接子路径。

【讨论】:

  • 它在serverlocation 节内吗?请参阅官方Creating NGINX Rewrite Rules 文档或How to write a url rewrite in nginx 的答案。
  • 它在服务器内部。不在位置。
  • 我不是 NGINX 专家,但我建议查看日志,如果还不够,请提高日志级别。从文档来看,我的语法看起来是正确的,我的正则表达式应该得到完全支持。
  • 您的代码没有错误。但它不是重定向。
猜你喜欢
  • 1970-01-01
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 2017-12-10
  • 1970-01-01
相关资源
最近更新 更多