Javascript重定向循环

时间:2015-05-01 14:57:01

标签: javascript

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

Google索引中的旧网址类似于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){....代码。如何在不导致重定向循环的情况下重定向?

提前致谢!

2 个答案:

答案 0 :(得分:1)

您正在混合使用正则表达式匹配和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; } 修饰符告诉它替换所有实例...

   private void btnUpdate_Click(object sender, EventArgs e)
    {
        List<DataGridViewRow> rowCollection = new List<DataGridViewRow>();
        foreach (DataGridViewRow row in dataGridView1.SelectedRows)
        {
            rowCollection.Add(dataGridView1.Rows[row.Index]);
        }

           dataset.Tables[0].Clear();

        foreach (DataGridViewRow row in rowCollection)
        {
           // dataGridView1.Rows.Add(row);
            dataset.Tables[tableName].Rows.Add(row);

        }
    }

答案 1 :(得分:0)

试试这个:

var url_new = document.URL.replace(/!|\/c3g8|\/cjg9|\/cee5|\/cce3/,'');
if(document.URL !== url_new){
    window.location = url_new;
}