如何通过nginx中的查询字符串重定向js?

时间:2019-05-24 08:47:44

标签: nginx

这是我的html。

{withCredentials: true}

文件夹中有两个js文件,一个用于生产(<head> <title>My Application</title> <script src="app.min.js"></script> </head> ),另一个用于开发(app.min.js)。

我想要的是通过查询字符串切换js文件。就像:

app.debug.js

我尝试使用以下配置,但它不起作用。

http://example.com/ -> use app.min.js
http://example.com/?debug=1 -> use app.dev.js

2 个答案:

答案 0 :(得分:1)

查询字符串仅出现在HTML文件的初始请求中。对JS文件的后续请求包含在src标记的script属性的值中。

您可以使用两个HTML文件,每个src属性的值都不同,或者您可以使用sub_filter directive更改src属性的值作为HTML文件已交付。

例如:

root /path/to/my/project;

location = / {
    if ($arg_debug) { rewrite ^ /debug.html last; }
    index index.html;
}
location = /debug.html {
    internal;
    try_files /index.html =404;
    sub_filter '<script src="app.min.js"></script>' '<script src="app.dev.js"></script>';
}
location / {
    try_files $uri $uri/ =404;
}

答案 1 :(得分:0)

https://serverfault.com/a/811981和@Richard Smith的技巧中,我找到了解决方案。

server {
  server_name self-hosted.com;

  listen 80;
  root /path/to/my/project;

  proxy_buffering off;

  location / {
    error_page 418 = @debug;

    if ($query_string ~ debug=1) { return 418; }

    try_files $uri $uri/ =404;
  }

  location @debug {
    sub_filter "app.min" "app.dev";
    try_files /index.html =500;
  }
}