Backbone 页面 load/refresh 上的 js 路由没有哈希

Backbone js routing on page load/refresh without hash

我的路由器里有这个

# ROUTING
App.Router = Backbone.Router.extend(

  routes:
    '': 'homePage'
    'photography': 'photographyPage'
    'about': 'aboutPage'
    'contant': 'contantPage'

  initialize: ->
    that = this
    @route 'photography', 'photographyPage', ->
      that.photographyPage()

    pageWrapper = $('#pageWrapper')
    content = $('#content')

  homePage: ->
    console.log 'homepage'

  photographyPage: ->
    console.log 'photography'
)

我启动路由器后

new (App.Router)
Backbone.history.start 
 pushState: true

在我的 html 我有这个

<nav>
  <a href="/photography" class="inbound-link">Photography</a>
  <a href="/about" class="inbound-link">About</a>
  <a href="/contact" class="inbound-link">Contact</a>
</nav>

我可以很好地导航到上面的链接。但是我 运行 遇到了一个问题,如果我登陆 http://website.com/photography 并刷新页面,我会得到 404 not found。或者,如果我直接转到那个 url,我也会得到 404。我尝试了这条路线 http://website.com/#/photography 并且成功了但是当它加载它时,它去掉了 # 并用 http://website.com/photography

替换了它

有人可以帮助我理解我做错了什么吗?非常感谢您的帮助!

尝试 href="/#photography" ?

希望对您有所帮助

问题是您从 HTTP 服务器请求路径 /photography,但它没有找到正确的文件。

您需要配置您的服务器,以便为可能请求的任何(或特定)路径提供您的 html 文件。

正确的方法取决于您的服务器(apache、nginx 等)