PHP kullanarak bir sitemap.xml dosyası oluşturmak, özellikle dinamik web siteleri için faydalıdır. Bu işlem, arama motorlarının sitenizdeki sayfaları daha kolay taramasını sağlar. Aşağıda, PHP ile bir sitemap.xml dosyasını nasıl oluşturabileceğinizi adım adım göstereceğim.
<?php
php
Kodu kopyala
php
Kodu kopyala
Kodu kopyala
Bu, sitemap.php dosyasını her gece yarısı çalıştırır.
Kodu kopyala
PHP ile bildirme:
php
Kodu kopyala
Eğer daha fazla detay veya özel bir yapı gerekiyorsa, lütfen belirtin!
1. Basit Bir Statik Sitemap
Bu örnek, sabit URL'lerle bir sitemap.xml oluşturur.<?php
Kod:
// Header ile XML çıktısı tanımlayın
header("Content-Type: application/xml; charset=utf-8");
// XML başlangıcı
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.example.com/</loc>
<lastmod>2024-12-05</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://www.example.com/hakkimizda</loc>
<lastmod>2024-11-30</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
- <loc>: Sayfanın URL'sini belirtir.
- <lastmod>: Sayfanın en son ne zaman güncellendiğini belirtir (ISO 8601 formatında).
- <changefreq>: Sayfanın ne sıklıkla değiştiğini belirtir.
- <priority>: Sayfanın önem derecesini belirtir (0.0 ile 1.0 arasında).
2. Dinamik Sitemap (Veritabanından Sayfalar Çekme)
Dinamik bir web sitesinde, veritabanından sayfaları çekip sitemap oluşturabilirsiniz.php
Kodu kopyala
Kod:
<?php
// Veritabanı bağlantısı
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "veritabani";
$conn = new mysqli($servername, $username, $password, $dbname);
// Bağlantı kontrolü
if ($conn->connect_error) {
die("Bağlantı hatası: " . $conn->connect_error);
}
// Sayfa verilerini sorgula
$sql = "SELECT url, last_modified FROM sayfalar";
$result = $conn->query($sql);
// Header ile XML çıktısı tanımlayın
header("Content-Type: application/xml; charset=utf-8");
// XML başlangıcı
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<?php
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
?>
<url>
<loc><?= htmlspecialchars($row['url']) ?></loc>
<lastmod><?= date(DATE_W3C, strtotime($row['last_modified'])) ?></lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<?php
}
}
?>
</urlset>
<?php
$conn->close();
?>
- Veritabanı yapısı:
- url: Sayfanın URL'si.
- last_modified: Sayfanın en son güncellendiği tarih (ör. 2024-12-01).
Çalışma Mantığı:
- Veritabanındaki sayfaları çekin.
- Her bir sayfa için <url> etiketini oluşturun.
- XML formatında çıktı verin.
3. Sitemap'i Dosya Olarak Kaydetme
Oluşturulan XML'i bir dosyaya yazmak için PHP'nin file_put_contents() işlevini kullanabilirsiniz.php
Kodu kopyala
Kod:
<?php
$sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
$sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
$pages = [
['loc' => 'https://www.example.com/', 'lastmod' => '2024-12-05', 'priority' => '1.0'],
['loc' => 'https://www.example.com/hakkimizda', 'lastmod' => '2024-11-30', 'priority' => '0.8']
];
foreach ($pages as $page) {
$sitemap .= '<url>';
$sitemap .= '<loc>' . htmlspecialchars($page['loc']) . '</loc>';
$sitemap .= '<lastmod>' . $page['lastmod'] . '</lastmod>';
$sitemap .= '<priority>' . $page['priority'] . '</priority>';
$sitemap .= '</url>';
}
$sitemap .= '</urlset>';
// Dosyaya yaz
file_put_contents("sitemap.xml", $sitemap);
echo "Sitemap oluşturuldu: sitemap.xml";
?>
4. Sitemap'i Otomatik Güncelleme
Bir sitemap dosyasını düzenli olarak güncellemek istiyorsanız, bir cronjob ile bu işlemi otomatikleştirebilirsiniz.Cronjob Örneği:
bashKodu kopyala
Kod:
0 0 * * * /usr/bin/php /path/to/sitemap.php
Bu, sitemap.php dosyasını her gece yarısı çalıştırır.
5. Google'a Sitemap Bildirme
Sitemap oluşturduktan sonra Google’a bildirerek arama motorlarının bunu kullanmasını sağlayabilirsiniz.Bildirme URL'si:
bashKodu kopyala
Kod:
https://www.google.com/ping?sitemap=https://www.example.com/sitemap.xml
PHP ile bildirme:
php
Kodu kopyala
Kod:
<?php
$sitemapURL = "https://www.example.com/sitemap.xml";
$response = file_get_contents("https://www.google.com/ping?sitemap=" . urlencode($sitemapURL));
echo "Google'a sitemap bildirildi.";
?>
Eğer daha fazla detay veya özel bir yapı gerekiyorsa, lütfen belirtin!