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 等)
我的路由器里有这个
# 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 等)