我一直在为我正在从事的项目试验 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。
我整天都在网上搜索这个问题的解决方案,并尝试使用正则表达式,但没有设法为我的问题找到合适的解决方案。在任何地方都没有找到任何东西之后,我想我一定是看错了……
谁能帮帮我?