【发布时间】:2011-04-26 14:07:49
【问题描述】:
根据 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 永远不应该到达服务器。
【问题讨论】:
-
您在哪个版本的 Opera 中看到这个?
-
您能否发布一些有关服务器的详细信息,日志看起来很奇怪,因为服务器应该忽略该片段。你使用一些 rewrite_rules 吗?
-
@Roatin Marth 正如日志所说,它是 Opera 11.10。在 11.01 也看到过,但没有人再使用它了。
-
@Dr.Molle 使用基本的
RewriteRule运行,它将“一切”发送到 index.php,Zends 前端控制器/路由器在其中解析请求 URI。在那里它很难失败,因为它没有找到这个 URI 的路由。在原始问题中添加了RewriteRule。 -
看看这些链接,它们之间有什么区别吗? [1]:stackoverflow.com/questions/5791569/…[2]:stackoverflow.com/questions/5791569/…状态栏显示的url是一样的,但是第一个包含%23而不是'#'
标签: javascript apache opera