このスキーマでホストされている大量のユーザープロファイルhttps://example.com/stats.php?player=name
(最も美しいURLではありませんが、.htaccess
はサイトの速度を大幅に低下させ、Apache2.conf
を理解していません)。とにかく、90,000のアカウントすべてをsitemap.xml
に入力せずに、これらのページすべてを動的にインデックス付けできるようにするにはどうすればよいですか。
サイトマップは、Webページのように動的にすることができます。 PHPスクリプトを使用して、データベースからそれらの名前を取得し、それぞれのXMLをエコーアウトするループを作成します。また、XMLに適切なコンテンツタイプを必ず出力してください。それでおしまい。
以下のコードは、動的なXMLサイトマップを生成するための基本的なスクリプトです。これは、あなた、または動的なサイトマップを作成しようとしている人を正しい方向に向けることを意図した例にすぎません。ここでは、より良いエラーチェックと処理が必要です。
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$query = "SELECT name FROM users";
if ($result = mysqli_query($link, $query)) {
echo header("Content-type: text/xml");
?>
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<?php
$date = date('Y-m-d');
while ($row = mysqli_fetch_assoc($result)) {
?>
<url>
<loc>https://domain.com/stats.php?player=<?php echo $row['name']; ?></loc>
<lastmod><?php echo $date; ?></lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<?php
}
mysqli_free_result($result);
?>
</urlset>
<?php
}
mysqli_close($link);
?>
1つのサイトマップに含まれるレコードは50,000のみであるため、このスクリプトには制限があります。ただし、 複数のサイトマップ を処理するように変更できる必要があります。これにより、50,000の制限を超えて成長できます。
サイトマップは、notでページをインデックスに登録するのに役立ちます。 サイトマップパラドックス をご覧ください。
ページのインデックスを取得するには:
一般に、ユーザープロフィールページは、Googleの検索インデックスに含めるのにふさわしい候補ページではありません。彼らは通常、多くのコンテンツを持っていないし、良いランディングページでもありません。