Google 的索引 XSLT 页面
Posted
技术标签:
【中文标题】Google 的索引 XSLT 页面【英文标题】:Google's Indexing XSLT Pages 【发布时间】:2011-07-02 11:52:47 【问题描述】:我的网站是使用 XML 作为数据存储创建的,并使用 XSLT 作为模板。谷歌似乎在索引基于 XML/XSLT 的网站方面不是很好。是否有任何高效/易于实现的软件组件可以仅为 Google bot 索引器呈现 XSLT?如果他们使用 php,那就更好了。
【问题讨论】:
属于webmasters.stackexchange.com dimitre...我可以同意您对 xsltprocessor 标签的看法。谢谢! 【参考方案1】:看看 PHP XSLT 处理器。
http://php.net/manual/en/class.xsltprocessor.php
如下使用:
<?php
$sXml = "<xml>";
$sXml .= "<sudhir>hello sudhir</sudhir>";
$sXml .= "</xml>";
# LOAD XML FILE
$XML = new DOMDocument();
$XML->loadXML( $sXml );
# START XSLT
$xslt = new XSLTProcessor();
$XSL = new DOMDocument();
$XSL->load( 'xsl/index.xsl', LIBXML_NOCDATA);
$xslt->importStylesheet( $XSL );
#PRINT
print $xslt->transformToXML( $XML );
?>
(来自http://php.net/manual/en/book.xsl.php)
更新
您在评论中询问如何拦截来自特定用户代理(例如 Googlebot)的请求。有多种方法可以做到这一点,具体取决于您使用的 Web 服务器技术。
在 Apache 上,一种方法是使用 mod_rewrite 在内部将请求的处理转移到包含类似于我们上面看到的代码的 PHP 脚本。此脚本从最初请求的 URL 中检索 XML,并将转换呈现给客户端。重写规则将有一个Rewrite Condition,它将 HTTP_USER_AGENT 标头与 Google 的标头进行比较。这是规则的一个示例(未经测试,但您应该明白):
RewriteCond %HTTP_USER_AGENT ^(.*)Googlebot(.*)$ [NC]
RewriteRule ^(.*\.xml.*)$ /renderxslt.php?url=$1 [L]
简而言之,条件是寻找以字符串“googlebot”开头的引荐来源网址,重写规则是匹配其中包含字符串“.xml”的任何 URL,并将完整 URL 作为查询字符串参数。
IIS 的 mod_rewrite 端口也存在 (http://www.isapirewrite.com/)。
或者,使用 IIS,您可以使用 ASP.NET HTTP module 拦截请求,再次检查 Request.Headers["HTTP_USER_AGENT"]
以获取 Google 的签名。然后,您可以通过阅读 PHP 脚本生成的 html 或使用 ASP.NET XML 控件以与上述类似的方式继续操作:
<asp:Xml ID="Xml1" runat="server" DocumentSource="~/cdlist.xml" TransformSource="~/listformat.xsl"></asp:Xml>
【讨论】:
XML 提供给客户端并链接到 XSLT。是否有一个组件可以在请求之前进行调解,并且仅适用于某些用户代理 [google bot] 仅向 GoogleBot 提供不同的内容可能会带来风险,以防他们认为您在试图玩弄系统。 听起来他只是想玩游戏。 @philwinkle 确实;例如,它是specifically recommended for Ajax content。我想知道这是否可以适用于 XSLT?遗憾的是,客户端 XSLT 演示在现实世界中很少使用,以至于您不会发现很多人在同一条船上:( 我在答案中添加了更多内容,为您提供了一些关于如何拦截来自 Google 的请求的想法。希望这会有所帮助。【参考方案2】:为什么不直接排除 robots.txt 中保存 xsl 文件的目录?
【讨论】:
您希望通过 google 获取您的内容,而不是因为它不符合预期的 HTML 输出而被忽略。 Google 不会只为您的网页处理或运行 javascript。 Google 确实会处理 JavaScript。以上是关于Google 的索引 XSLT 页面的主要内容,如果未能解决你的问题,请参考以下文章
xml 用google docs获取google的索引页面(yay james!)
apache_conf 使用和配置Google Ajax Crawler以方便搜索引擎索引ajax富页面(客户端MVC和Google Ajax Crawli)