访问 URL 时是不是可以完全摆脱主干上的哈希?

Posted

技术标签:

【中文标题】访问 URL 时是不是可以完全摆脱主干上的哈希?【英文标题】:Is it possible to fully get rid the hash on backbone when visiting a URL?访问 URL 时是否可以完全摆脱主干上的哈希? 【发布时间】:2013-07-22 04:52:05 【问题描述】:

我不知道如何完全解释我想要实现的目标,但让我来补充一下。

我已经在我的路由器上注册了路由。

routes: 
    "" : "home",
    "form/:formID/question/:questionID" : "showResults"

我启用了 pushState

window.base = '/make/search/';
Backbone.history.start(pushState: true, root: base);

当我直接在代码上使用和运行时。

router.navigate('form/87463636234/question/2', trigger: true);

它被重定向到这个 URL

http://example.com/make/search/form/87463636234/question/2

这是正确的。所以是的,一切都很好,但我真正想要的东西 当我从地址栏访问链接时,我希望它能够正确加载页面,通常我们使用 (#) 哈希来完全导航路由。

这个有效:

http://example.com/make/search/#form/87463636234/question/2

但是当我点击进入浏览器的地址栏时,我想完成这项工作,摆脱 URL 中的哈希。

http://example.com/make/search/form/87463636234/question/2

不幸的是,现在不是,我收到一个错误页面。

希望你能帮助我。

提前致谢

更新: 经过进一步研究,重写规则似乎是解决方案,但是我对此并不擅长,也许有人可以指导我如何做到这一点。谢谢

【问题讨论】:

【参考方案1】:

您必须配置您的网络服务器,以通过包括http://example.com/make/search/form/87463636234/question/2 在内的所有 url 为您的 html 页面提供主干应用程序。如果您使用的是某些 Web 框架,只需将其配置为返回此页面而不是 404 错误。

【讨论】:

我相信这与重写规则有关?当我继续我的研究时,仍然没有运气。 你使用什么网络服务器?对于 nginx,请参阅 ***.com/questions/9184959/…,对于 apache - ***.com/questions/11404567/…

以上是关于访问 URL 时是不是可以完全摆脱主干上的哈希?的主要内容,如果未能解决你的问题,请参考以下文章

在主干应用程序中获取以前的路由器/url

仅将 S3 对象 URL 限制为网站上的登录用户

SBT 与 Maven Central - 在工件 url 中摆脱 Scala 版本

私有 VPC 网络上的 Google Cloud Build

缓存服务

如何合并svn分支到主干上