使用nginx,我想保留url,但是无论如何实际上加载相同的页面。我将使用url和History.getState()
在javascript应用中路由请求。似乎应该做的一件简单的事情?
location / {
rewrite (.*) base.html break;
}
可以,但是重定向网址?我仍然需要网址,我只想始终使用同一页面。
我认为这将为您做到:
location / {
try_files /base.html =404;
}
使用try_files
对我来说不起作用-它在我的日志中导致了重写或内部重定向周期错误。
Nginx文档还有一些其他细节:
http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files
所以我最终使用了以下内容:
root /var/www/mysite;
location / {
try_files $uri /base.html;
}
location = /base.html {
expires 30s;
}
您的原始重写几乎可以正常工作。我不确定为什么要重定向,但我认为您真正想要的只是
rewrite ^ /base.html break;
您应该能够将其放置在某个位置或直接放置在服务器中。
这对我有用:
location / {
alias /path/to/my/indexfile/;
try_files $uri /index.html;
}
这使我能够为JavaScript单页应用程序创建一个包含所有内容的URL。如果所有静态文件(如css,字体和javascript构建的静态文件)与npm run build
都位于同一目录中,则会找到它们index.html
。
如果静态文件由于某种原因位于另一个目录中,那么您还需要类似以下内容:
# Static pages generated by "npm run build"
location ~ ^/css/|^/fonts/|^/semantic/|^/static/ {
alias /path/to/my/staticfiles/;
}
这对我有用:
location / {
try_files $uri $uri/ /base.html;
}
正确的方法是:
location / {
rewrite (.*) base.html last;
}
使用它last
将使nginxlocation
根据重写结果找到一个新的合适的块。
try_files
也是解决此问题的一种完全有效的方法。
本文地址:http://javascript.askforanswer.com/nginxjiangsuoyouqingqiufasongdaodangehtmlyemian.html
文章标签:history , javascript , nginx
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
文章标签:history , javascript , nginx
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!