我遇到了一个我似乎无法弄清楚的问题,我使用jQuery地址插件来存储历史记录并启用深层链接,点击后的典型网址如下所示:
http://mysite.com/#!/page
这里的问题是我需要摆脱最后的/
所以我需要它看起来像这样:
http://mysite.com/#!page
我正在使用插件版本1.2 - 最新版本为1.4。当我使用1.4时,我的hashbang #!
消失了..
谁知道为什么?即便如此,更新版本也会产生同样的问题。
解决此问题的原因是,如果请求?_escaped_fragment_=
,我会使用301重定向到“漂亮网址”。所以这个:
http://mysite.com/data/#!page1
会变成:
http://mysite.com/data/page1
目前它执行此操作:mysite.com/data//page1
这里是.htaccess重写:
<IfModule mod_rewrite.c>
RewriteEngine on
# Rewrite current-style URLs of the form 'index.php?url=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
</IfModule>
这是我在页面加载时使用的一些相关PHP:
if ($fragment = $_GET['_escaped_fragment_']) {
// OPTION 1: if Google is reqesting an '_escaped_fragment_=' page, then redirect to a clean URL
header("Location: $base/$fragment", 1, 301);
exit;
}
有关如何使这种情况更好的任何帮助表示赞赏。我不想'使用HTML5历史API',因为我已经探索过这个选项。
答案 0 :(得分:2)
这行代码可以提供帮助!
$.address.strict(false);