有以下nginx配置:
server {
listen 80;
server_name orange.mwlab.co;
root /home/hotels-app/domains/orange_web_app;
location /api {
passenger_enabled on;
rails_env stage;
root /home/hotels-app/domains/orange_app/current/public;
}
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
}
}
我想做以下事情:除了来自API(/ api / ...)的请求之外的所有请求都重定向到/ home / hotels-app / domains / orange_web_app,因为我创建了单页应用程序,我需要返回除API请求之外的静态index.html。提前致谢!
答案 0 :(得分:1)
您可以使用try_files
。
server {
listen 80;
server_name orange.mwlab.co;
root /home/hotels-app/domains/orange_web_app;
location /api {
passenger_enabled on;
rails_env stage;
root /home/hotels-app/domains/orange_app/current/public;
}
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
try_files $uri $uri/ /index.html =404;
}
}
确保使用index.html
的正确路径。
字符串try_files $uri $uri/ /index.html =404;
表示现在所有不存在的网址都会转发到index.html文件,但不会在浏览器地址栏中重写网址。
这是一篇包含更多信息的博文(它是关于angularjs的,但大多数都适用于任何单页应用):http://senior-java-developer.com/html5angularjsnginx-crawlable-application/