Skip to main content
 首页 » 编程设计

nginx之为pushState-URL重写Nginx

2025年02月15日17me-sa

我正在尝试让nginx与我的基于pushState的URI处理一起使用,而backbone.js在Javascript应用程序中为我管理。

现在访问一个级别的URI,例如。 example.com/users可以很好地工作,但不适用于两层或更深的URI,例如Backbone documentation中提到的example.com/users/all:

For example, if you have a route of /documents/100, your web server must be able to serve that page, if the browser visits that URL directly



因此,由于不熟悉nginx的重写选项,我仍然可以执行 rewrite ^ /index.html;之类的操作来将所有内容重定向到 index.html,但是会丢失存储在同一服务器上的所有最终静态文件(图像,javascript和css)我需要能够访问。

那么,如何使用下面显示的当前配置来完成此工作?
server { 
    listen   80; 
    server_name  example.com; 
 
    location / { 
        root   /var/www/example.com; 
        try_files $uri /index.html; 
    } 
 
} 

请您参考如下方法:

这是我对应用程序所做的。每条以'/'结尾的路由(除了自身根)都将使用index.html:

  location ~ ^/.+/$ { 
    rewrite .* /index.html last; 
  } 

您还可以为您的路线添加前缀:
Backbone.history.start({pushState: true, root: "/prefix/"}) 

接着 :
  location ~ ^/prefix/ { 
    rewrite .* /index.html last; 
  } 

或为每种情况定义一个规则。