【问题标题】:Nginx rewrite for multiple entry pointNginx 重写多个入口点
【发布时间】:2018-01-03 23:25:35
【问题描述】:

我有这样的结构。

  • 项目根目录
    • entry_point1
      • index.html
    • entry_point2
      • index.html
    • entry_point3
      • index.html

它开箱即用,当我路由到 mydomain/entry_point1 时,它提供正确的 index.html

但是,如果我想将域的 root(/) 或任何其他无法识别的路由路由到特定入口点怎么办? 例如:

我的域名/

mydomain/some/path mydomain/some/other/path

所有这些路径都必须重定向到 mydomain/entry_point3

但显然路线如下:

mydomain/entry_point1/some/resource

不会被重定向

我怎样才能做到这一点?

我也在使用 react router,所以像 mydomain/entry_point1/path/to/resource 这样的路由会被重写到入口点的索引文件中

提前致谢

编辑: 我最终得到了以下配置:

server {
  root path/to/folder;
  index index.html index.htm;

  server_name mydomain;

  location ~^\/entry1\.* {
      try_files $uri $uri/ /entry1/index.html;
  }

  location ~^\/entry2\.* {
      try_files $uri $uri/ /entry2/index.html;
  }

  location ~^\/entry3\.* {
      try_files $uri $uri/ /entry3/index.html;
  }

  location ~* {
      try_files $uri $uri/ /entry3/index.html;
  }
}

现在的问题是,当我路由到 mydomain/ 时,它会将我重定向到:mydomain/entry3/entry3/entry3/....

除此之外,它完美无缺。

当我路由到 mydomain/(entry1|entry2|entry3)/some/resource 它服务于 (entry1|entry2|entry3)/index.html

当我路由到 mydomain/some/other/path 它提供 entry3/index.html

【问题讨论】:

    标签: nginx


    【解决方案1】:
    server {
      listen 8081;
    
      location ~^\/entry2\.* {
        return 301 $scheme://www.entrypoint2.com$request_uri;
      }
      location ~^\/entry1\.* {
        return 301 $scheme://www.entrypoint1.com$request_uri;
      }
      location ~* {
        return 301 $scheme://www.entrypoint1.com/;
      }
    }
    

    curl -X GET "http://badasse.com:8081/entry1" -I => http://www.entrypoint1.com/entry1

    curl -X GET "http://badasse.com:8081/entry1/sdfsdf" -I => http://www.entrypoint1.com/entry1/sdfsdf

    curl -X GET "http://badasse.com:8081/entry2" -I => http://www.entrypoint2.com/entry2

    curl -X GET "http://badasse.com:8081/entry2/sdfdsf" -I => http://www.entrypoint2.com/entry2/sdfsdf

    curl -X GET "http://badasse.com:8081/esdfdsf" -I => http://www.entrypoint1.com/entry1

    【讨论】:

    • 其实域应该是一样的,我没有每个入口点的域。但我明白它是如何工作的
    • 这只是一个展示正则表达式如何与 nginx 一起工作的示例 :)
    • 是的,这很有用,现在我有另一个问题,请检查问题中的编辑!
    猜你喜欢
    • 1970-01-01
    • 2018-05-29
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多