0

我正在尝试以http://localhost:9294/users而不是http://localhost:9294/#/users的形式实现 url

根据文档,这似乎是可能的,但我无法让它适用于“书签”网址。

澄清一下,直接浏览到http://localhost:9294/users会给出 404 “未找到:/users”

4

2 回答 2

0

您可以像这样在 Spine 中打开 HTML5 历史记录支持:

Spine.Route.setup(history: true)

通过将history: true参数传递给Spine.Route.setup()它将启用没有哈希的精美 URL。

这方面的文档实际上被隐藏了一点,但它在这里(倒数第二部分):http ://spinejs.com/docs/routing

编辑:

为了获得可以直接导航到的 url,您必须在“服务器”端进行操作。例如,使用 Rails,您必须构建一种方法来获取 url 的参数(在本例中为“/users”),并相应地将其传递给 Spine。以下是 Spine 文档的摘录:

但是,使用 History API 时需要注意一些事项。首先,您发送到 navigate() 的每个 URL 都需要有一个真实的 HTML 表示。尽管此时浏览器不会请求新的 URL,但如果页面随后重新加载,它将被请求。换句话说,你不能像散列片段那样组成任意 URL;传递给 API 的每个 URL 都需要存在。实现这一点的一种方法是使用服务器端支持。

当浏览器请求一个 URL(期望一个 HTML 响应)时,您首先要确保在服务器端端点存在并且是有效的。然后你可以只提供主应用程序,它将读取 URL,调用适当的路由。例如,假设您的用户导航到http://example.com/users/1。在服务器端,您检查 URL /users/1 是否有效,以及 ID 为 1 的用户记录是否存在。然后,您可以继续提供 JavaScript 应用程序。

这种方法的警告是它不会给搜索引擎爬虫任何真实的内容。如果您希望您的应用程序可抓取,则必须检测爬虫机器人请求,并为它们提供“平行的内容世界”。不过,这超出了本文档的范围。

让它正常工作绝对是一个很好的努力,但它可以完成。在不知道您正在使用的堆栈的情况下,不可能给您一个具体的答案。

于 2012-04-18T14:26:35.900 回答
0

如本文所述,我使用了以下重写。

http://www.josscrowcroft.com/2012/code/htaccess-for-html5-history-pushstate-url-routing/

于 2012-04-27T16:04:55.040 回答