【发布时间】:2014-08-24 21:37:01
【问题描述】:
我正在使用 Jekyll 构建一个简单的营销网站,并在后台使用 Backbone 的路由和历史来处理导航。我网站的每个页面都是它自己的 HTML 文件,我的策略是在页面之间的链接上使用 preventDefault(),触发 jQuery.get() 以获取新的 HTML,并用新页面中的信息替换我的 div.content。
我知道这个设置有点不寻常,但我有我的理由:单页结构更可取,因为我希望精确控制页面转换,并且我希望避免每次用户导航时都请求我的 webfonts到一个新的页面。保持 HTML 文件静态和独立也是搜索引擎的一个胜利。
问题是:当我从根 URL 开始时一切正常,但当我从不同页面开始时,例如mydomain.com/page1,历史打破。在初始化期间,我的路由器尝试将我路由到我已经打开的页面,导致 404:Could not GET mydomain.com/page1/page1。我可以用一个 hacky isFirstLoad boolean 来防止这种情况,但这显然很糟糕,当我开始点击并使用后退按钮返回 /page1 时它不会中断。
我认识到一种解决方案是编写一些服务于我的index.html 的服务器端逻辑,而不管命中了什么 URL。但是,我不确定如何执行此操作,尤其是对于本地环境。是关于 PHP 还是 .htaccess?这甚至是我必须做的吗?我是不是走错了路?
谢谢!
【问题讨论】:
标签: javascript .htaccess backbone.js history jekyll