Индексирование страниц Google XSLT - PullRequest
8 голосов
/ 23 февраля 2011

Мой сайт был создан с XML в качестве хранилища данных, а XSLT используется в качестве шаблона.Похоже, что Google не очень хорош в индексировании сайтов, основанных на XML / XSLT.Существуют ли эффективные / простые в реализации программные компоненты, которые могут отображать XSLT только для индексатора ботов Google?Было бы еще лучше, если бы они работали с PHP.

Ответы [ 2 ]

3 голосов
/ 23 февраля 2011

Посмотрите на процессор 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)

UPDATE

Вы спросили в комментарии, как перехватить запрос от определенного пользовательского агента (например, Googlebot). Это можно сделать разными способами, в зависимости от используемой вами технологии веб-сервера.

В Apache одним из методов будет использование mod_rewrite для внутреннего перенаправления обработки запроса на PHP-скрипт, содержащий код, аналогичный тому, что мы видим выше. Этот скрипт извлекает XML из первоначально запрошенного URL-адреса и передает преобразование клиенту. Правило перезаписи будет иметь Условие перезаписи , которое сравнивает заголовок HTTP_USER_AGENT с заголовком Google. Вот пример правила (не проверено, но вы должны понять):

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

Вкратце, условие ищет реферера, начинающегося со строки "googlebot", и правило перезаписи соответствует любому URL со строкой ".xml" в нем и передает полный URL на страницу renderxslt.php как параметр строки запроса.

Порт mod_rewrite exis для IIS (http://www.isapirewrite.com/).

В качестве альтернативы, с IIS вы можете использовать ASP.NET HTTP-модуль для перехвата запроса, снова проверяя Request.Headers["HTTP_USER_AGENT"] на подпись Google. Затем вы можете продолжить работу, как описано выше, прочитав HTML-код, сгенерированный вашим PHP-скриптом, или альтернативно, используя элемент управления ASP.NET XML:

<asp:Xml ID="Xml1" runat="server" DocumentSource="~/cdlist.xml" TransformSource="~/listformat.xsl"></asp:Xml>
0 голосов
/ 03 августа 2012

Почему бы просто не исключить каталог, содержащий ваши xsl-файлы, в вашем файле robots.txt?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...