我正在一个具有动态内容的网站上工作。
当您单击一篇文章时,它会更改为使用推送状态的地址。
例子:
http://www.some-site.com/news/ - 点击新闻之前
http://www.some-site.com/news/dynamic-url/ - 点击新闻后
但由于 pushstate 在 IE 或更旧的浏览器中不起作用,我已将其重写为使用 jQuery.address,因此它会更改 url 中的哈希值,而仅适用于 IE。
现在的问题是,假设有人将指向该站点的链接发送给他们从 Chrome 复制的朋友并且他们的朋友使用 IE,它将开始将新的链接附加到该 URL。
例子:
http://www.some-site.com/news/dynamic-url/ - 发送给朋友的 URL
http://www.some-site.com/news/dynamic-url/#!/dynamic-url - 朋友访问该网站后的 URL
所以,我坚持如何重写/重定向它们。因为,哈希永远不会被发送到 Apache。我在推特上看到过,他们做的正是我想要的,但我不知道怎么做。
https://twitter.com/#!/google被重定向到https://twitter.com/google并且它在 IE 中工作。
非常感谢任何帮助,如果您不明白,请让我详细说明。
正如大卫托马斯所建议的,这里是函数。
var permalink = function(title, id, permalink){
var current = siteUrl + type + (order ? '/orderBy/' + order : '');
var newUrl = current + '/' + permalink + '/';
if(jQuery.browser.msie){
newUrl = '/' + permalink + '/';
jQuery.address.value(newUrl);
}
else{
stateNum++;
window.history.pushState({state: stateNum}, title, newUrl);
}
jQuery('title').html('SITE - ' + title);
}