Google 的 XSLT 页面索引

2023-12-25

我的网站是使用 XML 作为数据存储并使用 XSLT 作为模板创建的。看来 Google 不太擅长为基于 XML/XSLT 的网站建立索引。是否有任何高效/易于实现的软件组件可以仅为 Google bot 索引器呈现 XSLT?如果他们使用 PHP 就更好了。


看一下 PHP XSLT 处理器。

http://php.net/manual/en/class.xsltprocessor.php 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 ); 
?>

(From http://php.net/manual/en/book.xsl.php http://php.net/manual/en/book.xsl.php)

UPDATE

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

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

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

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

IIS 也存在 mod_rewrite 端口(http://www.isapirewrite.com/ http://www.isapirewrite.com/).

或者,通过 IIS,您可以使用 ASP.NETHTTP模块 http://www.c-sharpcorner.com/UploadFile/hemantkathuria/ASPNetHttpModules11262005004251AM/ASPNetHttpModules.aspx拦截请求,再次检查Request.Headers["HTTP_USER_AGENT"]寻求谷歌的签名。然后,您可以通过读取 PHP 脚本生成的 HTML,或者使用 ASP.NET XML 控件以与上述类似的方式继续操作:

<asp:Xml ID="Xml1" runat="server" DocumentSource="~/cdlist.xml" TransformSource="~/listformat.xsl"></asp:Xml>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google 的 XSLT 页面索引 的相关文章

  • header() 错误未在 php 中显示

    我写了一个PHP程序 我用session start and header 函数 我知道在向客户端发送任何内容之前应该使用此函数 没关系 但是为了测试 我向客户端发送了一条测试消息echo test 在使用 header 之前 但我没有收到
  • 如何将自定义类型数组传递给 Postgres 函数

    我有一个自定义类型 CREATE TYPE mytype as id uuid amount numeric 13 4 我想将它传递给具有以下签名的函数 CREATE FUNCTION myschema myfunction id uuid
  • 更新重复密钥上的复合密钥 [重复]

    这个问题在这里已经有答案了 我需要更新新行 如果两者都满足 date dat and empId who 作为复合键 但如果其中之一或两者不同 则插入 sql INSERT INTO history SET endtimestamp now
  • XML 到 YAML 转换

    我怎样才能把它转换成yml
  • 如何让 shell_exec 在 IIS 6.0 上运行

    问题 我有一个 PHP 脚本 它使用shell exec运行 pdf 到文本转换器 为了简化问题 我创建了一个简短的脚本 使用shell exec只是回显的输出dir命令 当我在 Apache 服务器上运行它时 一切都按预期运行 当我切换到
  • 从twitter api实体参数php获取图像url

    我正在尝试通过实体参数使用 php 获取并显示在推文中发布的图像 我的 url 中有 include entities 可以看到返回的 json 中的实体 在我的 foreach 循环中 我正在执行以下操作 foreach results
  • 基本表创建 fpdf

    我找不到使用 fpdf 制作表格并从 mysql 数据库获取数据的合适教程 我只是想知道如何创建一个 我在网上尝试示例时遇到了很多错误 例如 我有 名字 中间名 姓氏 年龄 和 电子邮件 列 如何使用 fpdf 创建表格并回显数据库中的条目
  • 如何比较两个字符串的大小写和变音符号不敏感?

    我有两根弦 字符串 1 塞巴斯蒂安 字符串 2 塞巴斯蒂安 我想通过忽略 重音 字符来比较这两个字符串 谁能知道这个逻辑吗 提前致谢
  • CSS 无法与 CodeIgniter 一起使用

    这是我的 CI 代码的一部分 class page extends CI Controller var Page public function construct parent construct this gt Page 1 this
  • PHP 的 PDO 可以限制为单个查询吗?

    PHP 的 PDO 允许通过 query 方法或作为准备好的语句同时执行多个查询 以下两个示例均有效 Two SQL queries query SELECT FROM table DROP table Execute via query
  • 如何读取 XML 文件并从中获取值以在 PHP 编码的 HTML 页面中显示

    我有一个 XML 文件 其中有一些重复的标签 其中包含不同的值 我需要获取这些值并显示在我的网页中 请帮助我得到这个 如果您使用 PHP5 可以查看 SimpleXML 您可以在这里找到介绍教程 http www w3schools com
  • Opencart最低下单价不包括一类

    我正在使用 opencart 并成功为所有交易添加了最低订单价格 这是我使用的代码 div div div class warning Minimum 10 Euro to checkout div 现在我想从中排除一个类别 以便可以购买该
  • Python BeautifulSoup XML 解析

    我编写了一个简单的脚本来使用 BeautifulSoup 模块解析 XML 聊天日志 标准 soup prettify 工作正常 只是聊天日志中有很多绒毛 您可以在下面看到我正在使用的脚本代码和一些 XML 输入文件 Code import
  • 如何在 PHP 数组中的另一个已知(通过键或指针)元素之后有效地插入元素?

    给定一个数组 a array abc 123 k1 gt v1 k2 gt v2 78 tt k3 gt v3 当其内部指针指向其元素之一时 如何在当前元素之后插入元素 如何在键已知元素 例如 k1 之后插入元素 表现护理 您可以通过使用拆
  • PHP mkdir() 和 fopen() 不起作用 - 权限问题? umask问题?

    以下 PHP 脚本无法创建目录 它也将无法创建文件 当目录已经存在时 ini set error reporting E ALL define ABSPATH SERVER DOCUMENT ROOT echo ABSPATH br br
  • laravel 5.4 在请求验证之前修改数据[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我有我的自定义请求 它扩展了 Backpack CrudController 现在我想重写 ValidatesWhenResolv
  • 与 array_intersect 相反?

    是否有一个内置函数可以获取数组 1 中不存在于数组 2 中的所有成员 我知道如何以编程方式执行此操作 只是想知道是否有一个内置函数可以执行相同的操作 所以请不要提供代码示例 这听起来像是一份工作array diff http www php
  • PHP 文件服务脚本:下载不可靠?

    这篇文章最初是关于 ServerFault 的一个问题 https serverfault com questions 131156 user receiving partial downloads https serverfault co
  • 如何使用 PHP 获取列中的所有值?

    我一直在到处寻找这个问题 但仍然找不到解决方案 如何从 mySQL 列中获取所有值并将它们存储在数组中 例如 表名称 客户 列名称 ID 名称 行数 5 我想获取此表中所有 5 个名称的数组 我该如何去做呢 我正在使用 PHP 我试图 SE
  • 无法与站点通信以检查致命错误

    无法与站点通信以检查致命错误 因此 PHP 更改已恢复 您需要通过其他方式上传 PHP 文件更改 例如使用 SFTP 有什么解决办法 我正在 WordPress 中编辑头文件 遇到这个问题 尝试这个 我有同样的问题并决定调查一下 更改 wp

随机推荐

  • 给定日期范围内的每日活跃用户数

    我需要根据开始日期和结束日期查找每日活跃用户总数 报名表 id registration no start date end date 1 1000 2014 12 01 2014 12 03 2 1001 2014 12 01 2014
  • PHP 中的“贪婪标记解析”是什么?

    PHP 中的 贪婪标记解析 是什么 我在 Codeigniter 指南中找到了这一点 除非需要解析变量 否则始终使用单引号字符串 并且在确实需要解析变量的情况下 请使用大括号来防止贪婪标记解析 我的字符串 foo 带有良好解释的答案会有所帮
  • React 和 babel 中的可选链接运算符

    在我的项目中我配置 babel presets react es2015 stage 1 transform optional chaining plugins transform runtime 这是我的devDependencies i
  • 如何一次运行多种语言的 tesseract?

    我必须分析包含英语和日语文本的图像 当我默认运行 tesseract 时 l eng 一些日语字符丢失了 否则 如果我用日语运行 tesseract l jpn 一些英文字符丢失 例如电子邮件 如何运行一个同时识别英语和日语字符的进程 从
  • dlopen 与链接开销

    假设我有一个库 foo so 当构建我的二进制文件 需要这个库 时 我可以 1 链接 foo so 或者 2 在程序源代码中 dlopen 这个库 然后调用这个库提供的函数 当我从库中调用函数时 1 和 2 之间有性能差异吗 请注意 我知道
  • 为什么 VB 中的 lambda 表达式与 C# 中不同?

    我刚刚在 NHibernate 中遇到了一个错误 该错误恰好已经被提出 https nhibernate jira com browse NH 2763 https nhibernate jira com browse NH 2763 我不
  • 将 duff 的设备从 C 移植到 JavaScript

    我有这种 Duff 的 C 语言设备 它工作正常 将文本格式设置为金钱 include
  • 带有 IIS 的 Kestrel - 运行时缺少 libuv.dll

    我们正在设置一个现有的 Web API 服务器 以便与现有的 API 一起为站点提供服务 我一直在松散地关注本文 http miniml ist dotnet how to serve a static site plus a web ap
  • 解析 WSDL 的简单方法

    我正在尝试解析 WSDL 以获取操作 端点和示例有效负载 用户输入的 WSDL 我找不到执行此操作的教程 我只能找到生成我不需要的源代码的那些 我尝试过使用 XBeans 但显然我需要 Saxon 有没有一种简单的轻量级方法可以在没有 Sa
  • 我如何处理异常?

    Angular 有一个很棒的 异常处理程序 https docs angularjs org api ng service 24exceptionHandler React js 有类似的东西吗 我想将我的错误记录到外部 API 例子 ht
  • SoundCloud track.stream_url 对某些曲目不起作用

    我注意到在 soundcloud 上的某些曲目上 stream url 指向 404 页面未找到 该曲目已设置为可流式传输 但流式传输 URL 仍然不起作用 这是一个例子 http api soundcloud com tracks 129
  • 向 R 绘图添加类似 Excel 功能的方法? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我一直在研究 R 图形参数 试图让我
  • 使用Intellij IDEA重新加载远程Spring Boot应用程序时出现异常

    我正在尝试使用 spring 设置远程 spring boot 环境devtools http docs spring io spring boot docs current reference html using boot devtoo
  • 将 SharePoint 列表数据提取到单独的 SQL Server 表的最简单方法?

    Edited What is the easiest way to scrape extract SharePoint list data to a separate SQL Server table One condition you r
  • wkhtmltopdf - 背景颜色未填充第二页

    我正在尝试使用 wkhtmltopdf 将 HTML 转换为 PDF 文档 我正在运行的命令是wkhtmltopdf test html test pdf 软件版本 wkhtmltopdf V wkhtmltopdf 0 12 5 with
  • php exec 命令(或类似命令)不等待结果

    我有一个想要运行的命令 但我不希望 PHP 坐等结果 是否可以让 PHP 不等待结果 即只是启动它并继续执行下一个命令 我找不到任何东西 并且不确定它是否可能 我能找到的最好的办法就是有人在一分钟内开始执行 CRON 工作 来自文档 htt
  • 仅在基于范围的循环中迭代奇数(偶数)元素

    假设我们有一个普通数组 或其他支持基于范围的循环的容器 const int N 8 int arr N 0 1 2 3 4 5 6 7 使用索引或迭代器 我们可以循环奇数元素并将索引增加 2 for int i 0 i lt N i 2 s
  • 在 noUISlider 中格式化工具提示

    我在我的 Rails 项目中使用 noUISlider noUiSlider create slider start 3 connect lower step 1 range min 1 max 9 pips mode steps dens
  • 如何设置 GOPRIVATE 环境变量

    我开始研究一个Go项目 它使用来自 Github 私有存储库的一些私有模块 每当我尝试运行时go run main go它给了我一个下面的410 Gone error 验证 github com repoURL 电子邮件受保护 cdn cg
  • Google 的 XSLT 页面索引

    我的网站是使用 XML 作为数据存储并使用 XSLT 作为模板创建的 看来 Google 不太擅长为基于 XML XSLT 的网站建立索引 是否有任何高效 易于实现的软件组件可以仅为 Google bot 索引器呈现 XSLT 如果他们使用