JavaScript 重定向循环

标签 javascript

我正在使用 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){.... 代码。我该怎么办重定向而不导致重定向循环?

提前致谢!

最佳答案

您正在混合正则表达式匹配和indexOfif 条件的计算结果始终为 -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/

相关文章:

javascript - 使用 NPM 重命名文件

PHP 下拉菜单查询另一个下拉菜单查询结果

javascript - 向文本序列添加计数器

javascript - 如何模拟不良滚动

javascript - 将自定义日期格式添加到 JSP html 代码中

javascript - Android webview "location.replace"不工作

javascript - Ionic 应用程序上的 Webview

javascript - 折叠 uncollapse javascript 三行

javascript - babel-loader@7.1.2 需要 webpack@2 || 的对等点3 但没有安装

javascript - 在 FabricJS 中创建 "Tools"?