【发布时间】:2012-04-11 16:16:18
【问题描述】:
我一直在为我正在进行的项目尝试 Backbone,但我一直无法让 Backbone 的“pushState”按我的意愿运行。
我有一个由 4 个视图和一个路由器组成的简单项目。如果在这种情况下很重要,我将通过元素的 id 进行路由。当我转到其中一个视图的哈希 (http://example.com/backbonetest/#step1) 时,它会正确显示,并且 URL 已更改。这是我希望在这里发生的事情,但是当我尝试导航到没有哈希的同一事物时,问题就来了(http://example.com/backbonetest/step1)。我在服务器 (IIS) 上收到 404,这是意料之中的,因为该页面不存在。
我整天都在尝试为 IIS 编写一个正则表达式,它会捕获并重写 url,删除 url 末尾的片段,以便正确提供页面。我宁愿简单地重写 url 而不是拥有同名的物理文件,因为页面的内容将动态生成,并且无论如何都需要脚本来获取内容。
我遇到的问题可能与我需要如何在文件系统上构建文件夹/脚本/样式有关。我希望能够将整个示例包含在 /backbonetest/ 文件夹中。对于脚本,'backbonetest/scripts' 等等。
我列出了我一直在测试我的正则表达式的 URL,以及我一直试图达到的结果:
输入输出: 2 a2 ab2 ab22 第2步 脚本.js 脚本.js 脚本/脚本/ 555/东西 555/东西 脚本/script.js 脚本/script.js编辑: 我发现使用的 url 不包含前面的斜杠, 这就是为什么 Qtax 的解决方案在 IIS 中不起作用的原因。新的输入结构如上所示。
'/555/stuff' url 我希望 404 正常。如果没有定义除当前子目录之外的子目录,并且 url 没有引用显式文件(例如带有扩展名的文件),我只想重写 url。
我整天都在网上搜索这个问题的解决方案,并尝试使用正则表达式,但没有设法为我的问题找到合适的解决方案。在任何地方都没有找到任何东西之后,我想我一定是看错了……
谁能帮帮我?
【问题讨论】:
-
不了解 IIS,但您可以使用的正则表达式重写是
^/[^./]+$到/。 -
这与我的测试数据以及 IIS 管理器中的测试人员完美配合,但由于某种原因,URL 要么没有被正确捕获,要么被重写到错误的位置。
-
我发现我在这里给出的输入并不是 IIS 用于重写规则的内容,解释了它为什么不起作用。我必须对 Qtax 的建议表达式进行哪些更改才能使其适用于新的输入字符串?