Автоматически сгенерируйте карту сайта, обязательно ли она должна быть 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, например?
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>'
}
}
?>
Здесь вы задаете два вопроса.
-
Должна ли карта сайта быть XML?
Простой ответ - нет, это не обязательно должен быть XML. Это может быть XML -файл, текстовый файл или канал RSS/Atom (который в основном является XML), HTML Карта сайта
HTML-карты сайта: Они используются на вашем веб-сайте для отображения макета в слоях на вашем веб-сайте любому клиенту, который тоже хотел бы (не знаю, почему они тоже хотели бы). Они, к сожалению, не подходят для представления поисковые системы.
RSS-каналы: Они довольно полезны для ленты комментариев или статей в блоге, которые постоянно обновляются, что в некотором смысле похоже на автоматическую карту сайта нового контента/комментариев в блоге.
XML-файлы: Это, проще говоря, набор ссылок в формате XML с дополнительными полями, такими как ссылка и, возможно, последнее измененное поле.
Текстовые файлы: Раньше это был предпочтительный способ отправки в Yahoo, однако в то время как раньше они начали принимать XML-каналы.
-
Можете ли вы создать карту сайта с расширением
.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, который не будет работать. Если вы можете подробнее рассказать о том, почему вы хотите это сделать, мы, возможно, сможем дать вам несколько советов.
Вы можете добавлять в GWT карты сайтов с любым расширением, если они отформатированы в формате XML. На моем сайте есть карта сайта .php
, где PHP-код генерирует XML, и он отлично работает.