PHP ile Dinamik Sitemap oluşturma - Weblo Teknoloji ve Yazılım Blogu- weblo.com.tr

Web Tasarım

PHP ile Dinamik Sitemap oluşturma

post-img

Aşağıda, bir web sitesindeki sayfaları tarayıp otomatik olarak sitemap.xml dosyası oluşturan basit bir PHP scripti oluşturabiliriz. Bu script:

  • Verilen bir ana URL'den başlar,

  • Aynı domain içindeki sayfaları tarar,

  • Ziyaret edilen URL'leri toplar,

  • Son olarak sitemap.xml dosyasını oluşturur.

Not: Basit projeler içindir. Büyük sitelerde curl yerine Guzzle, tarama derinliği, robots.txt gibi kurallar dikkate alınmalıdır.

Xml kodu:

set_time_limit(0); // Uzun sürebileceği için zaman sınırını kaldır

$startUrl = "https://example.com"; // Ana sayfanızı buraya yazın
$parsedBase = parse_url($startUrl);
$baseHost = $parsedBase['host'];

$visited = [];
$queue = [$startUrl];

function getLinksFromPage($url) {
    $html = @file_get_contents($url);
    if ($html === false) return [];

    $dom = new DOMDocument();
    @$dom->loadHTML($html);

    $links = [];
    foreach ($dom->getElementsByTagName('a') as $link) {
        $href = $link->getAttribute('href');
        if (!$href) continue;
        $href = trim($href);

        // Mutlak ve göreli URL ayarlamaları
        if (strpos($href, 'http') !== 0) {
            global $startUrl;
            $href = rtrim($startUrl, '/') . '/' . ltrim($href, '/');
        }

        $parsed = parse_url($href);
        global $baseHost;
        if (isset($parsed['host']) && $parsed['host'] === $baseHost) {
            $href = strtok($href, '#'); // anchor'ı sil
            $links[] = $href;
        }
    }

    return array_unique($links);
}

// Sayfa tarama işlemi
while (!empty($queue)) {
    $currentUrl = array_shift($queue);
    if (isset($visited[$currentUrl])) continue;

    echo "Taranıyor: $currentUrl\n";
    $visited[$currentUrl] = true;
    $foundLinks = getLinksFromPage($currentUrl);

    foreach ($foundLinks as $link) {
        if (!isset($visited[$link])) {
            $queue[] = $link;
        }
    }
}

// sitemap.xml oluştur
$xml = new SimpleXMLElement('');
$xml->addAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');

foreach (array_keys($visited) as $url) {
    $urlElement = $xml->addChild('url');
    $urlElement->addChild('loc', htmlspecialchars($url));
    $urlElement->addChild('changefreq', 'weekly');
    $urlElement->addChild('priority', '0.5');
}

$xml->asXML('sitemap.xml');
echo "\nSitemap oluşturuldu: sitemap.xml\n";
?>

Kullanım:

  1. sitemap-generator.php dosyasını sunucunuza yükleyin.

  2. $startUrl değerini kendi sitenizle değiştirin.

  3. Tarayıcıdan veya CLI'den çalıştırın.

  4. Çalışma sonunda proje klasöründe sitemap.xml oluşur

$startUrl = "https://example.com"; // Ana sayfanızı buraya yazın

Dikkat:

  • HTTPS destekli olmalı.

  • Sayfa sayısı çoksa tarama süresi uzun olabilir.

  • Robots.txt veya erişim kısıtları göz ardı edilir.

  • Güvenlik için sitemap-generator.php dosyasını parola korumalı yapabilirsiniz sunucuya gereksiz istekler göndermeyi engelleyebilirsiniz.

  • Sitemap çıktı yolunu özelleştirmek istediğiniz gibi düzenleyebilirsiniz.

Bunlarda İlginizi Çekebilir