【问题标题】:URL problem with ASP to ASP.NET again再次使用 ASP 到 ASP.NET 的 URL 问题
【发布时间】:2011-10-30 17:07:57
【问题描述】:

我将用示例代码再次解释。我们有一个 ASP 站点。它的内容太多了,你可以看看这个 ASP 站点here for sample link1。现在我们必须将此站点更改为 ASP.NET,您可以查看此 ASP.NET 示例页面here for sample link2。我们的域名不会改变。但是我们的旧网址会改变,你可以看到链接1和链接2的区别......问题是谷歌机器人索引了我们的旧网址,机器人会再次出现但不会找到我们的旧网址,所以它会给我们带来坏点......怎么能我们解决这个问题??

我会给 asp.net seo 的示例代码...也许它可以帮助你解决这个问题..

全球.asax:

string path= System.IO.Path.GetFileName(Request.FilePath).ToLower();

else if (f.GlobalasaxLink("select ID,url from Tbl_Contents", path, "url", "content") != "")
        {
            Context.RewritePath(f.GlobalasaxLink("select ID,url from Tbl_Contents", path, "url", "content"), false);
        }

在 ASP.NET 中,我们将所有内容的 url 保存到 db..

F 类和函数 GlobalasaxLink:

public string GlobalasaxLink(string SQL,string link,string field,string url)
{
    string result= "";
    SqlConnection con= new SqlConnection(connect());
    con.Open();
    SqlCommand cmd= new SqlCommand(SQL, con);
    SqlDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
        if (dr.HasRows)
        {
            if (dr[field].ToString() == link)
            {
                result= url+".aspx?ID=" + dr["ID"].ToString();
            }
        }
    }
    dr.Dispose();
    con.Close();
    return result;
}

content.aspx.cs:

string id = Request.QueryString["ID"];
            var content= from item in data.Tbl_Contents
                 where item.ID == Int32.Parse(id)
                 select item;
    foreach (var item in content)
    {
        lblContent.Text = item.content.ToString();
    }

我会提供来自任何此类页面的链接;

 <a title="Read More" href="<%#Eval("url")%>"></a>

这是我们的 seo 策略...我们必须继续使用这种策略。现在问题又来了..

我们如何解决旧网站 ASP 和新网站 ASP.NET 的 url 问题(对于谷歌机器人)?您可以查看这些网站链接 1 和链接 2 的示例。

【问题讨论】:

    标签: asp.net url url-rewriting seo url-routing


    【解决方案1】:

    由于您没有更改域,并且新旧页面似乎都有 .html 扩展名(不是 asp 或 aspx),我假设您的新网站也会收到对旧网站的请求,即新的一上线就会下线。 如果是这样,您应该让您的新站点使用 301 重定向(永久重定向)响应对旧 url 的所有请求到相应的新 url。然后搜索引擎会将页面排名从旧页面转移到新页面。 例如,在您的新网站上的 global.asax 中,您可以有如下内容:

    string requestedUrl = HttpContext.Current.Request.Url.ToString().ToLower();
    if (IsOldUrl(requestedUrl))
    {
        HttpContext.Current.Response.Status = "301 Moved Permanently";
        HttpContext.Current.Response.AddHeader("Location", NewUrlFor(requestedUrl));
    }
    

    其中IsOldUrl(string oldUrl)NewUrlFor(string oldUrl) 是您应该使用要重定向的旧网址列表以及将旧网址映射到相应新网址的逻辑编写的函数。

    在不相关的说明中:查看您发布的 global.asax 的 sn-p,您似乎正在为每个请求访问数据库。如果是这种情况,我建议您积极缓存,如果您希望您的网站运行良好。

    【讨论】:

    • @mehmetkarpuz 实现可以是Dictionary redirects,您可以将旧网址作为键,将新网址作为相应的值。然后你可以这样做:if (redirects.ContainsKey(pageRequested)) { Response.Clear(); Response.StatusCode = 301; Response.AddHeader("Location", redirects[pageRequested]); Response.End(); }
    • 好的,我做了这个解决方案。但是我们在旧网站上的网址太多了。我怎样才能快速做到这一点?
    • @mehmetkarpuz 在您的示例网址中,旧网址是 haberlericerik-11-121-marka-tescilininde-yasanan-sorunlar.html,而新网址是 marka-tescilininde-yasanan-sorunlar.html(即旧的减去最初的“haberlericerik-11-121-”)。所有新网址 = 旧网址 - 起始部分吗?并且起始部分总是“word-number-number-”的形式吗?如果是这样,您可以自动重定向而不是使用字典,方法是检查以 word-number-number- 开头的 url 并将它们重定向到没有初始部分的相同 url
    • 重定向 = 新字典(); redirects.Add("haberlericerik-11-121-marka-tescilininde-yasanan-sorunlar.html", "marka-tescilininde-yasanan-sorunlar.html");我写这个是有效的,但是我们有太多的网址,例如:haberlericerik-11-121-marka-tescilininde-yasanan-sorunlar.html 这是旧网址之一..数字是内容的 ID.. 数字来自 db ..
    • @mehmetkarpuz:我的问题是旧网址是否具有相同的结构。如果您看到一个旧网址,您可以通过查看它来识别它吗?如何?它们都具有相同的形式吗?
    猜你喜欢
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    相关资源
    最近更新 更多