如何为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();
}
?_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()));