我正在用javascript做一些旧的url重定向。
我在Google索引中的旧urls有点像domain.com/#!about/c3g8。我的新网址大约我们的网页是类似domain.com/#about,因为我已经改变了我的网站为一个分页的网站。
我的旧网站已经有4页没有包括根页面。每一页都有一个独特的结尾。他们是-
/c3g8
/cjg9
/cee5
/cce3不能在.htaccess中执行重定向,因为它们中包含散列(#)字符。因此,除了javascript,我别无选择。我当前的重定向js代码如下所示
if(document.URL.indexOf(/!|\/c3g8|\/cjg9|\/cee5|\/cce3/)) {
var url_new = document.URL.replace(/!|\/c3g8|\/cjg9|\/cee5|\/cce3/,'');
window.location = url_new;
break;
}所有内部页面都正确地重定向,但是主页变成了重定向循环,直到我按了两次Esc键。
我的js中也有这个$('a[href^=#]').bind("click", function(event){....代码。如何在不导致重定向循环的情况下重定向?
提前感谢!
发布于 2015-05-01 15:08:16
你在混合正则匹配和indexOf。if条件总是要计算为真实的-1,所以重定向总是会发生。
使用regex.test()代替,并使用g修饰符告诉它替换所有实例.
if(/!|\/c3g8|\/cjg9|\/cee5|\/cce3/.test(document.URL)) {
var url_new = document.URL.replace(/!|\/c3g8|\/cjg9|\/cee5|\/cce3/g,'');
window.location = url_new;
break;
}发布于 2015-05-01 15:14:06
试试这个:
var url_new = document.URL.replace(/!|\/c3g8|\/cjg9|\/cee5|\/cce3/,'');
if(document.URL !== url_new){
window.location = url_new;
}https://stackoverflow.com/questions/29989273
复制相似问题