我有一个角度网站,我启用了html5模式,所以我可以有漂亮的网址。我需要为googlebot配置网站。到目前为止我所做的是把它放在元标记中:
<meta name="fragment" content="!">
我的假设是放置那个元标记,我告诉googlebot它是一个ajax网站,并且它应该在域名和网址的其余部分之间的网址中附加_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();
}
答案 0 :(得分:0)
?_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()));