history.pushstate如何允许嵌套url路径的单个入口点

时间:2013-10-12 03:13:37

标签: javascript apache pushstate singlepage

对于措辞严厉的问题感到抱歉。

使用apache的PHP使用index.php / index.html来获取目录网址: localhost = localhost / index.php或localhost / place = localhost / place / index.php

如果我开始: 本地主机/位 我使用javascript history.pushstate更新一个长地址的网址,如: 本地主机/地点/ subplace 然后,如果我在浏览器中输入该URL,我将转到localhost / place / subplace / index.php,当我真的希望localhost / place / index.php允许该url成为唯一的入口点。

我正在使用简单的javascript(window.location.pathname或anchorNode.pathname)来检索用于ajax的url路径。这是由类似于backbone.js的简单路由器使用来更新页面。 javascript路由工作和浏览器中的后退/前进工作。如果只有我可以使用在地址栏中输入的网址的单一入口点。

总结一下:

我希望我的php应用程序的单一入口点可以获取所有子目录。

在单点入口我想运行javascript来获取路径并使用它来路由带有ajax的页面。

我正在使用history.pushState来更新网址,但是当目录长于主目录时,应用程序的单一入口点会混乱。基本上我得到了404页。

现在我并不太关心如何向后兼容没有history.pushState的浏览器。我只想要这一件事。

作为附录,我更喜欢使用javascript中的常规路径而不是查询字符串。是否使用地址栏或history.pushState加载页面,这是我更喜欢的。我不知道这是否可以通过apache重写或什么来处理。

类似的问题:

How to cope with refreshing page with JS History API pushState

1 个答案:

答案 0 :(得分:0)

确定。我做得太难了。

要使路由在页面加载时起作用,我需要做两件事。

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

当页面加载时,只将查询字符串中的新路径连接到处理路径的javascript字符串。

javascript仍在使用中,并且没有重复的功能。一切都很好。

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