PHP Dinamik Site Haritası Index’i Oluşturma ve Alt Site Haritaları

PHP Dinamik Site Haritası Index’i Oluşturma ve Alt Site Haritaları

Büyük veritabanı ve içerik yüklü siteler için kullanabileceğiniz dinamik site haritası ile site haritalarınızı Yıl ve Ay bazlı bölerek Google’a daha küçük ölçekli site haritaları gönderebilirsiniz. Bunun için .htaccess dosyamızda birkaç düzenleme yapmamız gerekmekte. İlk olarak onlardan bahsedelim.

#Sitemap.php dosyamıza sitemap.xml şeklinde erişebilir olarak ayarlayalım.
RewriteRule sitemap.xml sitemap.php [QSA]
#Parçalara ayırdığımız sitemap dosyalarını çağırdığımızda GET olarak algılatalım.
RewriteRule ^sitemap-(.*).xml$ sitemap.php?id=$1 [L,NC]

Artık sitemap.php dosyamızı oluşturduğumuzda site.com/sitemap.xml olarak bağlanıldığında site haritamız görüntülenebilir. Dahası site.xom/sitemap-2019-01.xml şeklinde 2019 yılının ilk ayını çağırdığımızdada sitemap dosyamızda düzenleme yaparak sadece o ay yayınlanan içerikleri ziyaretçilerimizle gösterebiliriz. Sitemap dosyamızı düzenleyelim.

//Fonksiyon yada bağlan dosyamızı çağıralım. 
//Dilerseniz buradada PDO'ya bağlanabilirsiniz.
require 'baglanti.php';

//Eğer sitemap.xml olarak geliyorsa ilk olarak sitemap indeximizi oluşturalım.
if(!$_GET['id']):

header("Content-Type: text/xml");
## Sitemap Bilgileri
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo ' <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
sql=$db->query("SELECT Date(timestamp) FROM mods GROUP BY Month(timestamp),Year(timestamp) order by timestamp DESC");
foreach($sql as $rows){
//İlk olarak çektiğimiz değeri bölelim YYYY-AA-GG şeklinde geldiği için bize sadece YYYY-AA lazım
    $ssmt=explode('-',$rows["Date(timestamp)"]);
    $sitemapdate=$ssmt[0].'-'.$ssmt[1];

    $zaman=explode('-',$rows["Date(timestamp)"]);
    $timecheck=$zaman[0].'-'.$zaman[1];
//Dilerseniz YYYY-AA tarihli son eklediğimiz içeriği bulalım ve siteharitası zamanı olarak alalım.
    $sss='SELECT * FROM tabloadı WHERE timestamp LIKE ? order by timestamp DESC';
    $sql1=$db->vericek($sss,array("$timecheck%"));
    $sql1->execute(array("$timecheck%"));
    $sqls=$sql1->fetch(PDO::FETCH_ASSOC);


$tarihparcala=explode(' ', $sqls['zaman']);
$url=site_url('sitemap-'.$sitemapdate.'.xml');
$date =$tarihparcala[0].'T'.$tarihparcala[1].'+00:00'; 
?>
<sitemap>
<loc><?=$url?></loc>
<lastmod><?php echo $date?></lastmod>
</sitemap>
<?php } ?>
<?php
 echo '</sitemapindex>';

else:
//Eğer sitemap-2019-12.xml şeklinde ziyaret söz konusuysa çalışsın..
    header("Content-Type: text/xml");
    ## Sitemap Bilgileri
    echo '<?xml version="1.0" encoding="UTF-8"?>';
    echo '
    <urlset
      xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="
        http://www.sitemaps.org/schemas/sitemap/0.9
        http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
    ';
//sitemap-YYYY-AA.xml de YYYY ve AA yı parçalara ayıralım.
    $zaman=explode('-',$_GET['id']);
    $timecheck=$zaman[0].'-'.$zaman[1];
//Sorgulatalım;
    $sss='SELECT * FROM tabloadı WHERE zaman LIKE ? order by timestamp DESC';
    $sql2=$db->prepare($sss);
$sql2->execute(array("$timecheck%"));
$sql=$sql2->fetch(PDO::FETCH_ASSOC);
    foreach($sql as $rows){
    $tarihparcala=explode(' ', $rows['zaman']);
    $url='URLİmiz';
    $date =$tarihparcala[0].'T'.$tarihparcala[1].'+00:00';
     ?>
    <url>
         <loc><?=$url?></loc> 
         <lastmod><?php echo $date?></lastmod>
         <changefreq>daily</changefreq>
          <priority>0.9</priority>
      </url>
    <?php } ?>
    <?php
     echo '</urlset>';
    
 endif;?>

Ücretli olarak yardım talep ederseniz yardımcı olabilirim. Sağ kısımda yer alan iletişim bilgilerinden bana ulaşabilirsiniz.


PHP Kodlama kategorisinde 03 Şubat 2020 - 12:18:29 tarihinde yayınlanmıştır.

Kazım USLU Hakkında

PHP,MYSQL,CSS,JS,JQUERY yazılım dillerine hakim, Şu sıralar PYHTON ve LINUX üzerine araştırma geliştirme yapan, sunucu optimizasyonu ile uğraşan, boş zamanlarında Wordpress geliştirmeleri üzerine çalışmalar yapıyorum..

Yorumlar (0)

Bu yazıya henüz bir yorum yapılmamış, hemen bir tane yapmak ister misin ?

Yorum Yapın

Utarif Yemek Tarifleri Scripti

Yemek Tarifleri paylaşım scriptine uygun fiyatla sahip olmak ister misin ?
DEMO - ÖZELLİKLER

Utvlite Wordpress Canlı TV Teması

UTV Canlı TV Scripti Artık WordPress’te. Oldukça uygun fiyatlı tuttuğum bu temayı satın almadan önce incelemeye ne dersin ?
UtvLite Canlı TV Teması WordPress – DEMO

İş Alımı: AÇIK

PHP işlerinizi Yapabilirim, Wordpress tema düzenleme, Bot yazılımı, metabox, özel alan yönetimi gibi işlerinizi özenle yapabilirim. Ayrıca WooCommerce ürün botu yazabilirim. Aklınızdaki işi online bildirmek için ;
Skype: Kcmedia42
R10.net Profilim: Kcmedia
Linkedin Profilim: Kazım Uslu
Instagram: Kaz.Uslu
Whatsapp: 0539 717 87 58(US LU) Mekanın Sahibi Geri Döndü :)

Uslu Bir ÖNERİ

Müşteri Temsilcisine bağlanırken telefonda yorulmayın, Direk müşteri hizmetlerine bağlanmak artık çok kolay :)

Son Yorumlar

Site Altyapımı Değiştirdim Hoşgeldin UBlog için kazuslu dediki, Teşekkür ederim kardeşim..

Site Altyapımı Değiştirdim Hoşgeldin UBlog için Melih dediki, Yenilik gayet işlevsel olmuş, başarıların devamını dilerim.

Yaz Elması – Kazuslu Bahçelerinde :) için Kazım USLU dediki, Hocam bizim burda yaz elması olarak adlandırılıyor tam cinsini bilmiyorum maalesef fakat bahçeye gittiğimde köyden birine sorarım..

Yaz Elması – Kazuslu Bahçelerinde :) için Ali ERGUN dediki, Merhabalar, resimdeki elmayı biz süt elma diye adlandırırdık, gerçek ismini biliyormusunuz? yeniden eski elmalardan dikmek istiyorum.

Site Altyapımı Değiştirdim Hoşgeldin UBlog için Kazım USLU dediki, İnş abi :)

Önerdiğim Bağlantılar

Burada Yer Almak ister misin ? İletişim sayfasından bana ulaşabilirsin :)