2016-03-01 71 views
0

我正在製作一個只有一個文件作爲入口點(index.html)的Backbone靜態網站。我想知道如何讓網站響應網址的任何外部網址到?例如如何使用Backbone製作的靜態網站響應網站的動態網址

www.example.com/this_route www.example.com/search

雖然我有一個路由器設置,現在,我只能從應用程序內觸發URL變化:

router.navigate("to_here"); 

但是,如果我在瀏覽器的url欄中鍵入www.example.com/to_here,我會收到錯誤消息:「在此服務器上找不到請求的URL/to_here。」

感謝所有幫助

+0

*「雖然我有一個路由器設置現在」 *請註明您的設置的細節,這樣我們就可以理解了什麼問題/提供建議。你現在用什麼http服務器來爲'index.html'提供服務..? –

回答

1

您需要設置Web服務器始終與index.html迴應。

我使用nginx爲此與下面的規則,它總是服務的index.html像這樣localhost:8080/to_here

server { 
    listen  8080; 
    server_name localhost; 

    location/{ 
     root /path/to/folder/with/files; 
     try_files $uri /index.html; 
    } 
} 
+0

哦有趣,謝謝。我想我可以用apache來做同樣的事情嗎? – bleepbloop

+0

我還沒有和Apache合作過,對不起。另外不要忘記允許服務器處理對.js,.css和其他資源的請求。 –

+0

@bleepbloop我有你想要的功能設置與Apache Tomcat。您需要設置一個過濾器來捕獲所有請求並相應地重新路由它們。讓所有資產/ ajax請求都通過,並將其他所有內容重新路由回index.html –

1

骨幹你「捕獲」來自瀏覽器的網址的任何請求他們與啓動時「#」。所以,即使你的路由器是這樣的:

routes : { 
      "this_route":"exampleFunction", 
      "search":"searchFunction" 
     } 

,如果你想依賴於瀏覽器的URL來執行各項功能,你必須寫www.example.com#this_routewww.example.com #搜尋與Router.js

火的功能