Google的索引XSLT页面

mon*_*ksy 8 php xml xslt seo

我的站点是使用XML作为数据存储创建的,而XSLT则用作模板.看来谷歌在索引基于XML/XSLT的网站上并不是很好.是否有任何有效/易于实现的软件组件可以为Google bot索引器呈现XSLT?如果他们使用PHP,那会更好.

Mik*_*ain 3

看一下 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 ); 
?>
Run Code Online (Sandbox Code Playgroud)

(来自http://php.net/manual/en/book.xsl.php

更新

您在评论中询问如何拦截来自特定用户代理(例如 Googlebot)的请求。有多种方法可以实现此目的,具体取决于您使用的 Web 服务器技术。

在 Apache 上,一种方法是使用mod_rewrite在内部将请求的处理转移到包含与我们上面看到的代码类似的代码的 PHP 脚本。该脚本从最初请求的 URL 检索 XML 并将转换呈现给客户端。重写规则将具有一个重写条件,用于将 HTTP_USER_AGENT 标头与 Google 的标头进行比较。这是规则的示例(未经测试,但您应该明白):

RewriteCond %{HTTP_USER_AGENT} ^(.*)Googlebot(.*)$ [NC]
RewriteRule ^(.*\.xml.*)$ /renderxslt.php?url=$1 [L]
Run Code Online (Sandbox Code Playgroud)

简而言之,条件是寻找以字符串“googlebot”开头的引荐来源网址,重写规则匹配其中包含字符串“.xml”的任何 URL,并将完整 URL 作为查询字符串参数传递到 renderxslt.php 页面。

IIS 也有 mod_rewrite 的端口 ( http://www.isapirewrite.com/ )。

或者,通过 IIS,您可以使用 ASP.NET HTTP 模块来拦截请求,再次检查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>
Run Code Online (Sandbox Code Playgroud)

  • 仅向 GoogleBot 提供不同的内容可能存在风险,以防他们认为您试图欺骗系统。 (2认同)
  • @philwinkle 确实;例如,[特别推荐用于 Ajax 内容](http://code.google.com/web/ajaxcrawling/)。我想知道这是否可以适用于 XSLT?遗憾的是,客户端 XSLT 演示在现实世界中很少使用,因此您不会发现很多人有同样的想法:( (2认同)