PHP kullanarak bir sitemap.xml dosyası oluşturmak

Zeberus

Yönetici
Site Yöneticisi
Katılım
27 Ara 2022
Mesajlar
1,653
Çözümler
32
Tepkime
9,408
Puanları
70
Yaş
36
Konum
Adana
Web
forumsitesi.com.tr
Coin
1,916
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.


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ığı:​

  1. Veritabanındaki sayfaları çekin.
  2. Her bir sayfa için <url> etiketini oluşturun.
  3. 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:​

bash
Kodu 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:​

bash
Kodu 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!
 

Create an account or login to comment

You must be a member in order to leave a comment

Create account

Create an account on our community. It's easy!

Log in

Already have an account? Log in here.

Üst Alt