根据Apache访问日志的这一行,似乎Opera有时会在发送给服务器的URI中包含哈希片段:
[26 / Apr / 2011:01:09:03 +0200]“GET / dagbok / #type = food HTTP / 1.1”500 - “ - ”“Opera / 9.80(Windows NT 6.1; U; nb)Presto /2.8.131版本/ 11.10“
有关为何这样做的经验或见解?
URI应该被jQuery的哈希更改事件捕获,而事件又会触发URI /dagbok/food/
上的.load()。
PS!发生500 Internal Server
是因为路由不理解带有哈希片段的URI。也不应该。
使用RewriteRules进行更新:
重写发动机 RewriteCond%{REQUEST_FILENAME}!-d
RewriteCond%{REQUEST_FILENAME}! - f
RewriteRule!。(js | ico | txt | gif | jpg | png | css)$ index.php
然后,Index.php启动Zends前端控制器/路由器,无法找到此URI的任何路由。哪个是正确的,因为这个URI永远不会到达服务器。
答案 0 :(得分:0)
我猜jQuery在发送XMLHttpRequest之前不会从URL中删除#hash部分,并依赖于浏览器这样做。快速测试显示Opera没有。 (这应该被认为是Opera中的一个错误 - 我认为没有任何标准涵盖这个确切的观点,但它没有做其他人可能做的事情。)