如何为googlebot配置ajax站点

本文关键字:ajax 站点 配置 googlebot | 更新日期: 2024-09-25 01:41:00

我有一个角度网站,我已经启用了html5模式,所以我可以有漂亮的URL。我需要为谷歌机器人配置网站。到目前为止,我所做的就是把这个放在元标签中:

<meta name="fragment" content="!">

我的假设是,通过放置这个元标签,我通知googlebot它是一个ajax网站,它应该在域名和url的其余部分之间的url中添加_escaped_fragment_。例如,如果它试图爬行http://thehaileselassie.com/Italian_Occupation则将其转换为http:// thehaileselassie.com/?_escaped_fragment_=Italian_Occupation。但我不认为这是正在发生的事情。我相信它是在把它附加到末尾,就像这样:http:// thehaileselassie.com/Italian_Occupation?_escaped_fragment_=。我不太清楚我做错了什么。

额外信息

我在RouteConfig中有这个,所以所有服务器调用都发送到HomeController:

 routes.MapRoute(
            name: "Default",
            url: "{*url}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

这就是控制器的内容:

 public ActionResult Index()
    {
        string fragment = Request.QueryString["_escaped_fragment_"];
        if (fragment != null)
        {
            if (String.IsNullOrWhiteSpace(fragment))
            {
                string url = "/templates/homeView.html";
                return File(Server.MapPath(url), "text/html");
            }
            else
            {
                string url = "/templates/" + fragment + ".html";
                return File(Server.MapPath(url), "text/html");
            }
        }
        return View();
    }

如何为googlebot配置ajax站点

?_escaped_fragment_=应该附加到末尾。我正在做的是得到域后的部分:Request.Url.LocalPath。这将返回/Italian_Occupation。之后,我做了一些逻辑来动态创建xml并返回它:

 string url = "/templates" + Request.Url.LocalPath + ".html";
            XmlDocument doc = new XmlDocument();
            try
            {
                doc.Load(Server.MapPath(url));
            }
            catch
            {
                return HttpNotFound(); 
            }

            var settings = new System.Xml.XmlWriterSettings();
            var propInfo = settings.GetType().GetProperty("OutputMethod");
            propInfo.SetValue(settings, System.Xml.XmlOutputMethod.Html, null);
            var stream = new System.IO.StringWriter();
            var writer = System.Xml.XmlWriter.Create(stream, settings);

          //  XmlElement elem = doc.CreateElement("book", "aaaa", "http://www.com");
          ////  doc.DocumentElement.AppendChild(elem);
          //  doc.DocumentElement.(elem, doc.DocumentElement.LastChild);
            XmlDocument doc2 = new XmlDocument();
            XmlElement element1 = doc2.CreateElement(string.Empty, "html", string.Empty);
            doc2.AppendChild(element1);
            XmlElement element2 = doc2.CreateElement(string.Empty, "head", string.Empty);
            XmlElement element4 = doc2.CreateElement(string.Empty, "title", string.Empty);
            XmlText text1 = doc2.CreateTextNode("TheHaileSelassie.Com :: "+doc.GetElementsByTagName("h1")[0].InnerText);
            element4.AppendChild(text1);
            element2.AppendChild(element4);
            doc2.DocumentElement.AppendChild(element2);
            XmlElement element3 = doc2.CreateElement(string.Empty, "body", string.Empty);

            XmlDocumentFragment xfrag = doc2.CreateDocumentFragment();
            xfrag.InnerXml = doc.InnerXml;
            element3.AppendChild(xfrag);
            doc2.DocumentElement.AppendChild(element3);
            //doc2.DocumentElement.AppendChild(xfrag);
            doc2.Save(writer);
            return Content(System.Net.WebUtility.HtmlDecode(stream.ToString()));