我有一个问题,根据用户的不同情况呈现出来。
组A:当看起来似乎是选择用户加载到主页并单击导航锚点时,该锚点应加载AJAX并使用history.pushState('','',destinationUrl);他们没有得到回应。控制台中显示错误消息:
未捕获DOMException:无法在“历史记录”上执行“pushState”:A URL“http://example.net/foo”的历史状态对象不能 在原始“http://www.example.net”和网址的文档中创建 “http://www.example.net/“
根据搜索,我认为问题不包括example.net/foo中的www。我将导航锚点更新为“http://www.example.net/foo”。
这解决了A组的问题,但为更大的用户群B组创建了同样的问题,并出现了类似的错误:
未捕获DOMException:无法在“历史记录”上执行“pushState”:A URL“http://www.example.net/foo”的历史状态对象不能 在原始“http://example.net”和网址的文档中创建 'http://example.net/'。
对于B组,网址差异被反转。对于这两个群组,该问题似乎与浏览器无关。该网站使用Craft CMS。
可能发生的任何方向或解决方案,如何为两个群体解决此问题?
答案 0 :(得分:1)
感谢@Patrick Evans。使用mod_rewrite的建议在这里引导我:https://httpd.apache.org/docs/2.4/rewrite/remapping.html#canonicalhost
我最终使用了" if"指令推荐,但也测试了mod_rewrite,它也有效。
<If "%{HTTP_HOST} != 'www.example.net'">
Redirect "/" "http://www.example.net/"
</If>