0

对不起,措辞不好的问题。

带有 apache 的 PHP 使用 index.php/index.html 作为目录 URL,例如:localhost = localhost/index.php 或 localhost/place = localhost/place/index.php

如果我从:localhost/place 开始,并且我使用 javascript history.pushstate 来更新一个带有长地址的 url,例如:localhost/place/subplace,那么如果我在浏览器中输入该 url,我将转到 localhost/place/subplace /index.php 当我真的希望 localhost/place/index.php 允许该 url 成为唯一的入口点时。

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

总结一下:

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

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

我正在使用 history.pushState 来更新 url,但是当目录比主目录长时,这会与应用程序的单点入口相混淆。基本上我得到一个404页面。

现在我不太关心让它向后兼容没有history.pushState的浏览器。我只是想让这件事起作用。

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

类似的问题:

如何使用 JS History API pushState 处理刷新页面

4

1 回答 1

0

行。我把事情做得太难了。

为了让路由在页面加载时工作,我需要做两件事。

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

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

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

这也回答了这个问题:如何使用 JS History API pushState 处理刷新页面

于 2013-10-16T09:39:59.610 回答