我正在用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){....
代码。如何在不导致重定向循环的情况下重定向?
提前致谢!
答案 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;
}