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!)

301页面可以被google抓取吗?

apache_conf 使用和配置Google Ajax Crawler以方便搜索引擎索引ajax富页面(客户端MVC和Google Ajax Crawli)

通过反转字符串来防止 Google 索引 div 的内容

Google正在使用ID'为我的目标标签网址编制索引

Google站点地图索引 - 包含参数的站点地图位置