我想知道 hashbang (#!) url 的位置或重写 nginx 指令会是什么样子。基本上像前端控制器一样通过 hashbang 路由所有非 hashbanged url。所以:
http://example.com/about/staff
将路由至
http://example.com/#!/about/staff
我不清楚这里最好的技术是什么?无论是编写 if 语句来检查 hashbang 的存在,还是只是过滤所有请求的通用重写......
片段标识符的 GET 不会/不应该(某些有问题的客户端可能会发送它们)出现在 HTTP 请求中,因此无论 Web 服务器如何,您都无法使用重写规则来匹配它们。
HTTP 引擎无法对此做出任何假设。服务器甚至没有给它。 http://www.w3.org/DesignIssues/Fragment.html
如果您尝试将 / 的初始请求重定向到 /#!您最终会得到“太多重定向”错误,而不是提供根索引,因为客户端会再次请求 / (请记住,它不会随请求一起发送 # )。您需要使用 javascript 而不是索引文档来执行此操作.
最重要的是,它在 GET 请求中在服务器端不可用。甚至卷曲已修补 https://github.com/bagder/curl/commit/9bd03483ce6983852d41f5f69cb74827c9defc26不要再发送了。
你可以使用 nginx 位置指令来使其他所有内容都到达前端控制器:
location = / {
}
location = /index.html {
}
location ~ / {
rewrite ^ /#!$uri redirect;
break;
}
但要小心这种方法;http://jeitennison.com/blog/node/154 http://www.jenitennison.com/2011/03/06/hash-uris.html更详细地介绍了 Gawker 上的 hashbang 崩溃以及与其使用相关的其他问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)