我正在使用 javascript 进行一些旧的 url 重定向。
我在 Google 索引中的旧网址类似于 domain.com/#!about/c3g8
。我的“关于我们”页面的新网址类似于 domain.com/#about
,因为我已将网站更改为单页网站。
我的旧网站有 4 个页面,不包括根页面。每一页都有一个独特的结局。他们是-
/c3g8
/cjg9
/cee5
/cce3
重定向无法在 .htaccess 中完成,因为它们包含 hash(#) 字符。因此,我别无选择,只能选择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){....
代码。我该怎么办重定向而不导致重定向循环?
提前致谢!
最佳答案
您正在混合正则表达式匹配和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;
}
关于JavaScript 重定向循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29989273/