htaccess拧了Ajax hash #mark

时间:2012-09-28 22:08:06

标签: javascript ajax .htaccess hash slash

我有几条标准规则,即在网址末尾添加斜杠:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [R=301,L]

Ajax照片库正在为#{1}}之类的网址添加一些哈希#。我无法理解htaccess阻塞或散列字符串的行为。但是它会使这个和画廊停止工作。

我的想法可能是这里需要使用htaccess来避免将此规则应用于哈希字符串。

请给我一个解决方案,因为我甚至无法理解那里出了什么问题。


URL/#photoset_photo_empty_progress

1 个答案:

答案 0 :(得分:2)

  

Ajax照片库正在为#{1}}之类的网址添加一些哈希#。我无法理解htaccess阻塞或哈希字符串的作用。但是它会使这个和画廊停止工作。

URL/#photoset_photo_empty_progressURL fragment的一部分,浏览器使用它来确定应如何处理内容。它用于命名锚点,告诉浏览器滚动到页面的特定部分,以及由javascript(在浏览器/客户端上)使用。 片段永远不会在请求中发送到服务器。服务器根本看不到片段,它只针对客户端。

如果您向网络服务器发送请求:#,则服务器在请求中看到的唯一内容是http://myserver.com/index.php#site-map。没有GET /index.php HTTP/1.1。因此,您的重定向基本上删除了通过javascript放置在那里的片段。没有办法通过服务器绕过它,因为它不知道浏览器是否存在片段。

可能的解决方法:

  1. 确保您整个网站上的所有链接(包括您生成的任何链接)都包含尾部斜杠,因此您无需重定向。
  2. 添加某种javascript,以便在完成照片库AJAX调用时包含尾部斜杠
  3. 修改您的mod_rewrite重定向代码,使其重定向照片库的AJAX调用。