2013-10-12 37 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