2013-10-12 43 views
0

對於措辭嚴厲的問題,抱歉。history.pushstate如何允許嵌套url路徑的單個輸入點

PHP與Apache採用的index.php/index.html中的目錄下的網址,如: 本地主機=本地主機/ index.php文件或本地主機/位=本地主機/地點/ index.php文件

如果我下手: 本地主機/地方 和我使用javascript history.pushstate來更新一個長地址的網址,如: localhost/place/subplace 然後如果我在瀏覽器中輸入該網址,我會去localhost/place/subplace/index .php時,我真的想要localhost/place/index.php允許該網址成爲唯一的入口點。

我使用簡單的javascript(window.location.pathname或anchorNode.pathname)來檢索使用ajax的url路徑。這由類似於backbone.js的簡單路由器用來更新頁面。 JavaScript路由工作,並在瀏覽器中後退/前進。如果只有我可以讓它與在地址欄中輸入的網址的單個輸入點一起工作。

綜上所述:

我想一個入口點我的PHP應用程序來獲取所有子目錄。

在單個入口點上,我想運行javascript來獲取路徑並使用它來用ajax路由頁面。

我使用history.pushState來更新url,但是當目錄長於主目錄時,會因爲應用程序的單個入口點而混亂。基本上我得到一個404頁面。

現在我不太在意使它與沒有history.pushState的瀏覽器向後兼容。我只想讓這件事情起作用。

作爲一個附錄,我寧願使用JavaScript中的常規路徑而不是查詢字符串。無論頁面是用地址欄加載還是使用history.pushState,這就是我所希望的。我不知道這是否可以用Apache重寫或什麼處理。

類似的問題:

How to cope with refreshing page with JS History API pushState

回答

0

確定。我正在努力。

爲了讓路由在頁面加載時工作,我需要做兩件事。

在.htaccess文件中,我可以使用apache重寫使所有的url到index.php?path = first/second/third。

當頁面加載時,只是將查詢字符串中的新路徑連接到處理路由的javascript字符串。

javascript仍在使用中,並且沒有重複的功能。一切都很好。

這也是這樣的答案:How to cope with refreshing page with JS History API pushState