首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript重定向循环

Javascript重定向循环
EN

Stack Overflow用户
提问于 2015-05-01 14:57:01
回答 2查看 1.2K关注 0票数 0

我正在用javascript做一些旧的url重定向。

我在Google索引中的旧urls有点像domain.com/#!about/c3g8。我的新网址大约我们的网页是类似domain.com/#about,因为我已经改变了我的网站为一个分页的网站。

我的旧网站已经有4页没有包括根页面。每一页都有一个独特的结尾。他们是-

代码语言:javascript
复制
/c3g8
/cjg9
/cee5
/cce3

不能在.htaccess中执行重定向,因为它们中包含散列(#)字符。因此,除了javascript,我别无选择。我当前的重定向js代码如下所示

代码语言:javascript
复制
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){....代码。如何在不导致重定向循环的情况下重定向?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-01 15:08:16

你在混合正则匹配和indexOfif条件总是要计算为真实的-1,所以重定向总是会发生。

使用regex.test()代替,并使用g修饰符告诉它替换所有实例.

代码语言:javascript
复制
if(/!|\/c3g8|\/cjg9|\/cee5|\/cce3/.test(document.URL)) {
    var url_new = document.URL.replace(/!|\/c3g8|\/cjg9|\/cee5|\/cce3/g,'');
    window.location = url_new;
    break;
}
票数 1
EN

Stack Overflow用户

发布于 2015-05-01 15:14:06

试试这个:

代码语言:javascript
复制
var url_new = document.URL.replace(/!|\/c3g8|\/cjg9|\/cee5|\/cce3/,'');
if(document.URL !== url_new){
    window.location = url_new;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29989273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档