我有一个基于index.php的单页面应用程序,它可以加载所需的所有css和js。然后在页面内的div中,我使用jQuery .load()
加载所有应用程序功能。每次我通过菜单使用此功能加载东西时我也会这样做:
window.history.pushState({},null,url);
在浏览器历史记录中写入一个如下所示的条目:
https://example.org/creditmanager/index.php?area=masterdata&sub=pf
每个页面都有一个区域和子的唯一匹配。除了导航栏中的来回按钮外,一切正常。如果我回击浏览器会将地址栏中的网址更改为历史记录中的上一个条目,但由于网址未更改,因此不会重新加载网页(或者至少这是我最好的猜测为什么)。如果我在击中后重新加载,我会以正确的方式获得正确的页面。所以我正在考虑使用重写规则增强我的.htaccess,这个重写规则会说这个例子是url:
https://example.org/creditmanager/index.php?area=masterdata&sub=pf
将成为:
https://example.org/creditmanager/masterdata/pf
这样前一个网址可能看起来像
https://example.org/creditmanager/masterdata/pg
并且浏览器将强制重新加载后退按钮。 我在this SO question找到了一个可以接近我的规则的例子,但是我需要帮助来为我的目标详细说明这个概念(第一个子区域是区域,第二个是url查询中的sub)。 你们中的任何人都很善意帮我详细说明这项任务吗? 到目前为止,我在apache中的站点.conf文件中只有一个重写条件,它将http://请求重定向到https://而没有.htaccess。
修改 试图将此直接添加到apache的conf文件中:
<Directory /var/www/jdev/creditmanager/ >
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ users.php?user=$1&page=$2
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)/$ users.php?user=$1&page=$2
</Directory>
请注意,app root位于/ var / www / jdev /中,而index.php位于/ creditmanager subdir 中 谢谢!