Автоматически сгенерируйте карту сайта, обязательно ли она должна быть XML?


Я хочу создать XML-карту сайта (для SEO), моя первая попытка добиться этого заключалась в том, чтобы включить ссылки на главное меню/навигацию веб-сайта с помощью <?php include ("assets/includes/menu.inc"); ?>:

<li><a href="index.php">Home</a></li>
<li><a href="gallery.php">Gallery</a></li>
<li><a href="contact.php">Contact</a></li>

В следующий файл XML-карты сайта:

<?xml version="1.0" encoding="UTF-8"?>

    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

        <url><loc>http://www.example.com/</loc></url> 

    </urlset>

Я уже задавал здесь вопрос "Как включить PHP в XML" - очевидно, я не могу этого сделать, поэтому моя идея была выброшена в мусорное ведро. Я уже погуглил "Как создать автоматическую карту сайта", но все, что я нашел, было картой сайта Генераторы, которых я стараюсь избегать.

Вопрос в том, возможно ли это вообще? чтобы создать карту сайта, которая будет извлекать ссылки из файла main.inc веб-сайта? Есть какие-нибудь идеи? Должен ли он быть XML? может ли это быть php, например?

Author: Community, 2014-01-30

3 answers

Чтобы создать карту сайта, которая будет извлекать ссылки с главного веб-сайта файл .inc?

Расширение не имеет значения. Таким образом, у вас может быть php-файл, такой как

<?php
header ("Content-Type:text/xml");
echo '<?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
        // code to extract and echo links from the file 
echo '   </urlset>';
?>

Чтобы извлечь ссылки из html-кода, см. эту страницу.

Код должен быть изменен на что-то подобное приведенному ниже.

<?PHP
  // Original PHP code by Chirp Internet: www.chirp.com.au
  // Please acknowledge use of this code by including this header.

  $url = "assets/includes/menu.inc";
  $input = @file_get_contents($url) or die("Could not access file: $url");
  $regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
  if(preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER)) {
    foreach($matches as $match) {
      // $match[2] = link address
      // $match[3] = link text 
      echo '<url><loc>' . $match[2] . '</loc></url>'
    }
  }
?>
 1
Author: Ranjith, 2014-01-31 08:54:51

Здесь вы задаете два вопроса.

  1. Должна ли карта сайта быть XML?

    Простой ответ - нет, это не обязательно должен быть XML. Это может быть XML -файл, текстовый файл или канал RSS/Atom (который в основном является XML), HTML Карта сайта

    HTML-карты сайта: Они используются на вашем веб-сайте для отображения макета в слоях на вашем веб-сайте любому клиенту, который тоже хотел бы (не знаю, почему они тоже хотели бы). Они, к сожалению, не подходят для представления поисковые системы.

    RSS-каналы: Они довольно полезны для ленты комментариев или статей в блоге, которые постоянно обновляются, что в некотором смысле похоже на автоматическую карту сайта нового контента/комментариев в блоге.

    XML-файлы: Это, проще говоря, набор ссылок в формате XML с дополнительными полями, такими как ссылка и, возможно, последнее измененное поле.

    Текстовые файлы: Раньше это был предпочтительный способ отправки в Yahoo, однако в то время как раньше они начали принимать XML-каналы.

  2. Можете ли вы создать карту сайта с расширением .php?

    В принципе, пока ваш PHP-файл возвращает и XML-заголовок/mime-тип и возвращает допустимый XML, с вами все будет в порядке. Посмотрите на WordPress, их RSS-каналы создаются с использованием PHP.

Используйте функцию PHP DOM и задайте свои заголовки:

header( "content-type: application/xml; charset=UTF-8" );
$doc = new DomDocument('1.0', 'UTF-8');

Документацию можно найти здесь:

Http://www.php.net/manual/en/class.domdocument.php

РЕДАКТИРОВАТЬ:

Глядя на свой предыдущий пост, вы пытаетесь внедрить HTML в XML, который не будет работать. Если вы можете подробнее рассказать о том, почему вы хотите это сделать, мы, возможно, сможем дать вам несколько советов.

 6
Author: Liam Sorsby, 2014-01-31 08:33:40

Вы можете добавлять в GWT карты сайтов с любым расширением, если они отформатированы в формате XML. На моем сайте есть карта сайта .php, где PHP-код генерирует XML, и он отлично работает.

 0
Author: Ivo van der Veeken, 2014-01-31 09:24:58