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.xmldosyasını oluşturur.
Not: Basit projeler içindir. Büyük sitelerde
curlyerineGuzzle, tarama derinliği,robots.txtgibi 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:
-
sitemap-generator.phpdosyasını sunucunuza yükleyin. -
$startUrldeğerini kendi sitenizle değiştirin. -
Tarayıcıdan veya CLI'den çalıştırın.
-
Çalışma sonunda proje klasöründe
sitemap.xmloluş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.phpdosyasını parola korumalı yapabilirsiniz sunucuya gereksiz istekler göndermeyi engelleyebilirsiniz. -
Sitemap çıktı yolunu özelleştirmek istediğiniz gibi düzenleyebilirsiniz.