Индекс карты сайта PHP - PullRequest
       11

Индекс карты сайта PHP

1 голос
/ 29 августа 2010

Моя карта сайта огромна, и мне нужно разбить ее на индекс карты сайта, который я сделал, и перечислены карты сайта: sitmap-1.xml sitemap-2.xml и т. Д.

Я хочу иметь один файл карты сайта, который основан на выбранном номере карты сайта, т.е. sitemap-1.xml перейдет к файлу карты сайта и перечислит 1–30 000 ссылок, а при выборе sitemap-2 будет показано 30 000–60 000 и т. д. *

Как проверить, какой номер карты сайта был выбран, и назвать ли файл?

Ответы [ 2 ]

2 голосов
/ 29 августа 2010

Почему бы не назвать их так, как вы называли "sitemap-1" и "sitemap-2", и внутри вы делаете что-то подобное в sitemap.php файле:

$number = $_GET['number'];
$entries_per_page = 30000;
for($i = ($number - 1) * $entries_per_page; $i < $number * $entries_per_page; $i++){
  // print out the values
}

В дополнение к этому добавьтезапись в вашем .htaccess, как это:

RewriteRule sitemap-([0-9]+).xml$ sitemap.php?number=$1

Вы также можете использовать границы для вашего запроса SQL:

$query = "SELECT * FROM table LIMIT ".(($number - 1) * $entries_per_page).", ".$entries_per_page;

Я использую что-то подобное, и в дополнение к этому sitemap_index.phpфайл выглядит следующим образом:

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<? for($i = 1; $i <= 6; $i++) : ?>
 <sitemap>
  <loc><?php echo ROOT_PATH?>sitemap_<?= $i ?>.xml</loc>
  <lastmod><?php echo date('Y-m-d')?></lastmod>
 </sitemap>
<? endfor ?>
</sitemapindex>

И так как большинство поисковых систем любят карты сайта с максимум 1000 записей, вы можете разделить карту сайта на еще более мелкие части.И просто используйте ceil ($ total_entries / $ records_per_page) для цикла for (заменив «6»).

0 голосов
/ 29 августа 2010

Похоже, вам нужен примитивный индексный документ? Примерно так:

<site-idx>
  <sub href="sitemap-1.xml"/>
  <sub href="sitemap-2.xml"/>
  <sub href="sitemap-3.xml"/>
</site-idx>

Затем вы можете написать программу, которая принимает число в качестве входных данных, делает предположения о количестве записей в файле и затем загружает правильный индекс? Или, возможно, вы могли бы указать количество записей в каждом подфайле в индексном файле:

<site-idx>
  <sub href="sitemap-1.xml" num="1000"/>
  <sub href="sitemap-2.xml" num="1010"/>
  <sub href="sitemap-3.xml" num="1101"/>
</site-idx>

Возможно, вы сможете использовать XInclude для загрузки вложенных документов, для больших XML-файлов, которые я бы рекомендовал использовать XMLReader в PHP, он будет занимать намного меньше памяти.

...