Php ile SEO’lu Sistemler ve Php SEO Betiği (Script) Google

Bu yazımda size Php programlama dilini kullanarak nasıl SEO’lu sistemler yazabileceğinizi anlatmak istedim. Fakat bunu en iyi bir örnek üzerinde gösterebileceğimi anladım ve bu düşünceyle Php SEO betiğini (script) yazdım. Bu betiğin ufak, basit ama ihtiyacınız olan hemen her şeyi içerdiğini düşünüyorum.

Özellikleri

Php SEO betiğinin temel ve geliştirilmeye açık özelllikleri şu şekildedir:

Arama motoru dostu adresler
Bu betikte yazıların adresleri http://www.siteniz.com/yazi-adresi.html,
sayfaların adresleri http://www.siteniz.com/sayfa/sayfa-adresi/ ve
anasayfanın adresi http://www.siteniz.com/anasayfa/ ve şeklindedir. Sakın yazıların sonu “.html” ile bitiyor diye betiğin içinde html sayfaları olduğunu düşünmeyin.

Her yazıya ve sayfaya özgü metalar
Bu betikte anasayfada farklı, her yazı ve her sayfada farklı site başlığı, meta description ve meta keywords görüntülenir. Farklıdan kastım örneğin o an hangi yazı görüntüleniyorsa o yazının başlığı site başlığı olup, o yazı için belirlenmiş ve veritabanında saklanan meta bilgileri sitenin meta bilgileri olarak görüntülenir. Böylece arama motorları sitenizi tam ve doğru olarak indeksleyebilir.

Sitemap.xml desteği
Bu basit sistem için bir de otomatik güncellenen sitemap.xml mekanizması yazdım. Siz içeriği güncelledikçe o da kendiliğinden güncellenecektir.

Çalışma Mantığı

Arama motoru dostu adreslerin, meta bilgilerinin ve sitemap.xml’in çalışma mantığını ayrı ayrı incelemek lazım.

Adreslerin çalışma mantığıPhp SEO Veritabani
Veritabanındaki tablomuzda her yazının ve sayfanın bir de adres isimli alanı mevcut. Sağda görmüş olduğunuz tablo hem yazılar hem de sayfalar içindir. Böyle bir sisteme yazacağınız yönetim panelinde girilen yazı başlığını, aşağıdaki gibi bir seo fonksiyonuyla uygun bir adres haline getirerek veritabanındaki adres alanına giremelisiniz. Bu şekilde $_GET ile alacağınız adresi veritabanındaki adres alanından kontrol edebilirsiniz. Örneğin başlık Yusuf Güney Aşk-ı Virane ise bunun adresi fonksiyonda süzüldüğünde yusuf-guney-ask-i-virane olacaktır.

function seola($s) {
	$tr = array('ş','Ş','ı','İ','ğ','Ğ','ü','Ü','ö','Ö','Ç','ç');
	$eng = array('s','s','i','i','g','g','u','u','o','o','c','c');
	$s = str_replace($tr,$eng,$s);
	$s = strtolower($s);
	$s = preg_replace('/&.+?;/', '', $s);
	$s = preg_replace('/[^%a-z0-9 _-]/', '', $s);
	$s = preg_replace('/\s+/', '-', $s);
	$s = preg_replace('|-+|', '-', $s);
	$s = trim($s, '-');
	return $s;
}

Not: Merak etmeyin, bu fonksiyonu betiğin içinde seo.php isimli bir dosyaya ekledim, oradan alabilirsiniz.

Veritabanına adresi girdikten sonra sitenin .htaccess dosyasını ayarlamak kalıyor. Bu ayar sayesinde
http://www.siteniz.com/yazi-adresi.html şekindeki adresi
http://www.siteniz.com/yazi.php?yazi=yazi-adresi şeklindeki adrese yönlendiriyoruz. Bunun için de .htaccess dosyasını şu şekilde düzenledim.

RewriteEngine On
RewriteRule ^anasayfa/ index.php [L]
ReWriteRule ^(.*).html yazi.php?yazi=$1 [L,NC]
ReWriteRule ^sayfa/(.*)/ sayfa.php?sayfa=$1 [L,NC]
ReWriteRule ^sitemap.xml sitemap.php

Metaların Çalışma Mantığı
Yukarıdaki başlıkta vermiş olduğum veritabanı tablosuna bakarsanız her yazıyı girerken ayrıca tanim(description) ve anahtar(keywords) hanelerinin de girildiğini anlayabilirsiniz. Böylece bir yazı görüntülenirken sitenin meta description ve meta keywords’lerini bu alanlardan alabiliriz. Bu işlemi yapmak için betikteki meta.php dosyasında bulabileceğiniz meta() isimli bir fonksiyon ekledim. Nasıl yapıldığını oradan direk görebilirsiniz. Sadece yazacağınız yönetim panelinde bu alanlara da veri girileceğini unutmayın yeter.

Otomatik güncellenen sitemap.xml mantığı
Arama motorlarının özellikle istediği site haritası dosyası (sitemap.xml) aslında betikte yok fakat oluşturmuş olduğum ve çalışır durumdaki sitemap.php dosyasını .htaccess dosyasındaki ayarla sitemap.xml olarak gösteriyoruz. Böylece hem Php’nin gücü ile direk veritabanından bilgileri alabiliyoruz, hem de bu dosyayı .xml dosyası şeklinde arama motorlarına tanıtabiliyoruz.

Kurulum

Kurulum oldukça basit.
* Bir sonraki başlıktan betiği indirin.
* Paketin içinden çıkan klasörü sunucunuza yükleyin.
* Betik klasöründe bulunan veritabani.sql dosyasını oluşturacağınız veritabanında çalıştırın.
* ayar.php dosyasını açarak veritabanı bağlantısı ve site adresi için gerekli ayarları yapın.

Not: Eğer bu söylediklerim size çok yabancı geliyorsa önce kendinizi php üzerinde geliştirmenizi tavsiye ederim. Bu yazı programcılara hitap ettiği için lütfen veritabanı nedir, sunucu nedir, nereye yükleyeceğim gibi sorular sormayalım.

Php SEO Test ve İndirme Bilgisi

Bu kadar açıklamadan sonra artık betiği test edeceğimiz veya indirebileceğimiz adreslere yönelebiliriz.
Php SEO betiğini test etindir

Php SEO betiği bendeniz Yakuter tarafından SEO Teknikleri için yazılmıştır.

Erişilebilirlik ve W3C,Webmaster Araçları 84 Yorum 19.995 Okunma Yazan: Erhan Yakut

Paylaş

Çeviri / Translation

English German Italian France Polish Russian Spannish Ukrainian Bulgarian Dutch Finnish Hindi Japanese Norwegian

Benzer Yazılar

“Php ile SEO’lu Sistemler ve Php SEO Betiği (Script)” için 84 yorum bulunuyor.

  • 07 Mart 2009, 16:07

    # ReWriteRule ^(.*).html yazi.php?yazi=$1 [L,NC]
    # ReWriteRule ^sayfa/(.*)/ sayfa.php?sayfa=$1 [L,NC]

    Bu kısımları anlayamadım. yazi.php?yazi=1 denmiş. adreste 1 değil de başka bir değer olsa farketmeyecek mi? beni aydınlatırsanız sevinicem

     
  • 07 Mart 2009, 18:24

    Oradaki 1 sayı olarak 1 değil $1 şeklinde bir değişken. Hemen öncesinde (.*) şeklinde belirtilen değer bu kod ile $1 değişkenine alınıyor. Örnek üzerinden anlatmak gerekirse:

    ReWriteRule ^erhan-yakut.html yazi.php?yazi=erhan-yakut

    Umarım böyle daha anlışılır olmuştur.

     
  • 08 Mart 2009, 00:01

    Güzel yazı , bu paket çok işime yariyacak. Yeni sitemde bu betiğinden yararlanıcam , çok teşekkürler.

     
  • 08 Mart 2009, 01:37

    Faydalı olmasına sevindim. Kullanılacak olmasına ise daha da sevindim. Zaten yazma sebebimiz bu değil mi? ;)

     
  • 5 Baha
    10 Mart 2009, 11:50

    Erhan Bey çok faydalı bir makale olmuş.Benim sormak istediğim 1-2 sorum var.
    Öncelikle linklerimi şu şekilde gösterebiliyorum ;
    http://www.xxx.com/viewarticle.php?articleid=443&title=diziye-yeni-karakter-geliyor

    Ancak bu adres için .htaccess içine tam olarak ne yazmalıyım ki adres :
    http://www.xxx.com/443-diziye-yeni-karakter-geliyor.html

    olarak çıksın.Denemelerimde hep başarısız oldum.
    Şimdiden çok teşekkürler.

     
  • 10 Mart 2009, 14:10

    selamlar,
    örnek içerisindeki $sql=”SELECT * FROM yazilar WHERE adres=’$_GET[yazi]‘”; satırı bana sql injection a sebep olacak gibi göründü. Bu durumun bir genel çözümü mevcut mu ?

     
  • 7 onder
    10 Mart 2009, 18:17

    merhaba;
    aslında denesem sormama gerek kalmaz ama şimdi deneyecek vaktm yok bir hafta sonra lazım olacak;

    # ReWriteRule ^(.*).html yazi.php?yazi=$1 [L,NC]
    yerine
    # ReWriteRule ^(.*)/ yazi.php?yazi=$1 [L,NC]
    yazsam http://www.sayfam.com/onemli-yazi/ ya verilen link
    http://www.sayfam.com/yazi.php?yazi=onemli-yazi adresine gider değil mi?
    yoksa başka bir ayar mı gerekir bunun için

     
  • 10 Mart 2009, 19:55

    @onuracun, elbette ki sql injection’a ve bilimum saldırılara oldukça açık bir örnek bu. Biz bunu alıp olduğu gibi kullanın demiyoruz, diyemeyiz. Burada dikkatinizi çekmek istediğimiz husus .htaccess kullanımı ve veritabanındaki adres alanı gibi hususlar. Bu nedenle oldukça basit bir betik. Kaldı ki yönetim paneli bile olmayan yani veri girişi yapılmayan bir örnek. Biz işin SEO kısmındayız ;)

    @onder, evet sorun olmaz, dediğiniz gibi çalışır.

     
  • 9 GammaUnion
    11 Mart 2009, 02:38

    Ben bu betiği kendi şablonuma uyarlayıp denedim. Şablonumda

    böyle bir kod var. http://localhost/sablon/resimler/xhtml_ikonu.gif i herhangi bir html sayfası gibi çalıştırıyor. Bir anlam veremedim. Neden kaynaklanıyor olabilir?

     
  • 11 Mart 2009, 02:50

    @GammaUnion Bey, bunun sebebi .htaccess dosyasının yanlış düzenlenmiş olması. Şuan test alanındaki betikte düzgün çalışıyor. (bkz. resim) Bu durumda sizin düzenlerken bir hata yapmış olma ihtimaliniz artıyor.

    Not: Bu tür sorularınızı forumdaki bu başlıkta paylaşırsanız sevinirim.

     
  • 11 Mart 2009, 02:54

    @Baha Bey, RewriteEngine On satırından sonra aşağıdaki kodu denerseniz büyük ihtimalle amacınıza ulaşırsınız.

    ReWriteRule ^(.*)-(.*).html viewarticle.php&id=$1&title=$2 [L,NC]

     
  • 15 Mart 2009, 15:25

    Gammaunion

    kurallar dizisindeki “RewriteEngine On” satırını şu şekilde değiştirir misin ?

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

     
  • 16 Mart 2009, 02:11

    @haymac, yorumunda oldukça haklısın. Sonuçta ilgili dosya ve klasör yoksa şeklinde bir ibare belirtirsek daha sağlam bir .htaccess erişimi elde edebiliriz. Fakat şu da var ki eklediğimiz her satır, düşündüğümüz her ayrıntı için makalede yeni bir paragraf ile açıklama yapmamız gerekir. Tabi bundan da öte insanların temel konudan uzaklaşması demektir. Bu nedenledir ki güvenlik önlemlerine, ayrıca bir yönetim paneli yazma olayına hiç girmedim. Bırakalım insanlar işin temelini öğrensinler. Üzerine zaten zamanla katabilirler.

     
  • 16 Mart 2009, 04:22

    Öncelikle merhabalar,
    Süper ötesi bir makale olmuş,seo işini ilk defa öğrenmeye başlayacağım makalenizi okudum benim sorum farklı olacak umarım yardımcı olabilirsiniz.

    Benim hazır bir script kullanıyorum ve sistemin 3 farklı seo su var.Örnek olarak;

    1- http://www.site.com/id-konuadı.html

    2- http://www.site.com/kategori/altkategori/id-konuadı.html

    3- http://www.site.com/2008/04/02/id-konuadı.html

    şeklinde örnek verebilirim.

    Ben genel olarak 2 nolu seo yu kullanıyorum bunu mesela ordaki id (konu sırası) ve sondaki .html yazılarını kaldırabilir miyim acaba?Gördüğüm kadarı ile bu çok daha faydalı bir sistem sadece .htacces düzenlemem yeterli olur mu diye denedim .html yazılarını sildigim zaman önce açtığım konulara giremiyorum :) Çok yabancıyım bu konuya en kısa sürede cevabınızı bekliyorum.Saygılarımla…

     
  • 16 Mart 2009, 12:58

    Merhaba osifox,
    Malesef bu olaylar öyle bir iki değişiklikle çözülebilecek konular değiller. .htaccess ile yönlendirilen veriyi sistem tarafından doğru şekilde çözümlemek gerekir. Yani sadece .htaccess’te değişiklik yaparak sistemin istediğin gibi çalışmasını sağlaman malesef mümkün değil.

     
  • 16 Mart 2009, 16:42

    yani anladığım kadarı ile birden fazla dosya düzenlemek gerekiyor, kurcalayayım biraz belki bulurum cevabınız için çok teşekkür ederim Erkan Yakut,Saygılar…

     
  • 17 önder
    17 Mart 2009, 18:24

    merhaba
    tekrar bir soru. cevizde sordum sallayan olmadı. buraya sorayım dedim tam da bu konuyla ilgili olduğu için

    bütün örneklerde türkçe karakterleri replace ile değiştirerek kullanılmış ama wikideveya drupalde buna gerek duymadan bu işlem yapılabiliyor. mesela:http://tr.wikipedia.org/wiki/Hakan_%C5%9E%C3%BCk%C3%BCr
    gibi.

    bu bağlantı firefoxda
    http://tr.wikipedia.org/wiki/Hakan_Şükür
    şeklinde ie6 da da
    http://tr.wikipedia.org/wiki/Hakan_%C5%9E%C3%BCk%C3%BCr
    şeklinde çıkıyor. ama her halükarda google amcam bunu
    http://tr.wikipedia.org/wiki/Hakan_Şükür olarak görüyor. ve sorunsuzca sayfa açılıyor.
    şimdi merak ettiğim linkleri bu şekilde kullanmak için ne yapmak gerekli. ya da bi şey yapmadan da bu iş oluyor da sırf adres çubuğundaki estetik görünüm kaygısıyla mı bu iş yapılıyor.

     
  • 17 Mart 2009, 23:50

    Merhaba Önder Bey,
    Sorunuzun cevabını tam olarak bilmediğim için bir araştırma içine girdim. Vikipedi bozulan adresi (url) yeniden düzeltiyor. Bunu nasıl yaptığını ve karakterleri nasıl doğru algıladığını öğrendiğim anda sorunuzu cevaplayacağım.

    Bunu söylüyorum çünkü diğer sitelerdeki gibi sizinle ilgilenilmediğini düşünmenizi istemiyorum.

     
  • 19 önder
    18 Mart 2009, 01:24

    merhabalar
    çok teşekkürler. öncelikle belirteyim ceviz le ilgili öyle bir şey demiş olmayayım. sanırım orada da bir çok kişi bu olayı bilmiyor. o yüzden uzun süre cevap verilmeyip altta kalınca otomatik olarak sallanılmamış oluyor :)

    bu arada aynı sistem drupal in de içinde var.
    ben de onun kodlarına bakmayı düşünüyorum ama drupal çok karmaşık bir sistem olduğu için çözemeyeceğim muhtemelen. sizin de bilginiz olsun dedim belki drupal in kodları yardımcı olabilir

     
  • 20 önder
    24 Mart 2009, 21:05

    tekrar merhaba;
    sorumun cevabı çok kolaymış. her şeyi utf-8 kodlayarak yaptığınızda hiç bir şey yapmanıza gerek kalmadan türkçe karakterler sorun olmaktan çıkıyor.

    anca şimdi başka sorularım var
    birincisi şu satır sonlarında kullandığınız [L,NC]ya da [L] ya da başka bir yerde gördüğüm [L,QSA]nın anlamları nedir. hatta bir kaç yerde bunu hiç kullanmadan yapılan örnekler de gördüm.

    ikincisi siz yukarıda iki çeşitli yönlendirme yapmışsınız ben ne zaman bunu denesem ikisi de çalışmıyor. yani tek kural koyduğumda sorun yok ikinciyi koyunca birinci de iptal oluyor nerede hata yapıyor olabilirim

    son soru yine yukarıdaki sayfa/(.*) örneği gibi birşey yaptığımda site sanki gerçekten bir alt klasördeymiş gibi davranıyor. bu yüzden de grafik ve stil dosyalarını görmüyor. bu neden kaynaklanıyor olabilir

     
  • 25 Mart 2009, 00:51

    Önder Bey sorularınızı forumda paylaşırsanız öncelikle çok sevinirim.

    1. Her satırın sonunda gördükleriniz koşulları bildiren bayraklardır. Şuradaki makalede örnekleriyle birlikte güzel bir şekilde açıklanmış.

    2. Nerede hata yaptığınızı bilmemiz mümkün değil.

    3. Keşke betiği inceleseydiniz. Sorunun cevabını görebilirdiniz. Betikte siteynin adresini barındıran bir değişken taşıyorum ve resim kodunda bu değişken ile beraber resmin adreisni yazıyorum. Böylece alt klasörde de olsa resimler gerçek adresinden çağırılır.

    Forumlarda görüşmek üzere…

     
  • 22 önder
    25 Mart 2009, 12:28

    ilginize teşekkürler,
    betiği incelememiştim gerçekten hatta indirmemiştim bile :)
    bunun sebebi eğer indirirsem olduğu gibi elimdeki sisteme uydurmaya çalışıp kullanacağımı bilmemdi. Doğrudan hazır bir şeyi apartırsam da elimde çalışan ama ne olduğundan haberim olmayan bir sistem olacaktı. onun yerine sürekli sorun çıkaran bir türlü çözemediğima ama en sonunda çözdüğümde herşeyini de anladığım bir sistem olmasını yeğlerim.

    daha 6 yaşında siyah beyaz televizyonumuzu incelerken bozmuştum. karakter özelliği sanırım :)kurcalamadan rahat edemiyorum

     
  • 23 Tunç
    26 Mart 2009, 04:07

    Hocam ben .htaccess dosyasında gerekli ayarları yaptım fakat çalıştıramadım dosyayı sildiğimde dahi sistemde herhangibir değişiklik olmuyo hostun windows olmasından kaynaklanıyo olabilir mi?

     
  • 26 Mart 2009, 08:54

    Evet sorun barındırmada olabilir. Windows host aslında .htaccess ile çok sıkıntılı fakat siz yine bir araştırın onu. Bildiğim kadarıyla .htaccess sadece Linux için çalışan bir konu.

     
  • 25 Tunç
    26 Mart 2009, 22:23

    Evet sorun ondan kaynaklanıyormuş. Aynı sıkıntıyı yaşayan bir arkadaş bir forumda anlatmış ve bir çözüm sunmuş;

    !Alıntı!
    Arkadaşlar buldum çözümü.. Modrewrite diye bir program buldum.. IIS üzerine yüklenen ISAPI ile sorunu çözüyor ve .htaccess dosyalarını okuyor.. Mükemmel çalışıyor.. Tavsiye ederim.. Yalnız program limitli 1000 kere editliyor demo versiyonunda, ondan sonra server’a restart çekmeniz gerekli..Herkes güle güle kullansın

    Download için:

    http://www.micronovae.com/ModRewrite/DownloadPro.html
    !Alıntı!

    Ben denemedim denemeyide düşünmüyorum ama aynı sorunu yaşayan başka biri belki deneyip yorum yapar diye buraya yazıyorum.

     
  • 26 Bora
    27 Mart 2009, 09:38

    başarılı bir çalışma, paylaşım için teşekkurler

     
  • 27 emre
    27 Mart 2009, 13:59

    Merhaba,

    öncelikle sağolun çok yalın ve güzel bir çalışma olmuş.

    Benim sorunum htaccess ile alakalı.

    Örneğin test yerinde de, http://www.yakuter.com/test/phpseo/anasayfa/ çalışıyor ancak, http://www.yakuter.com/test/phpseo/anasayfa çalışmıyor.

    .htaccess te sona bir tire konulması ile ilgili kod vardır muhakkak ancak bulamadım, yardımcı olursanız sevinirim

     
  • 27 Mart 2009, 18:40

    Şu kod sayesinde anasayfa sonunda / olacak şekilde çalışıyor.

    RewriteRule ^anasayfa/ index.php [L]

     
  • 29 emre
    27 Mart 2009, 19:00

    pardon demek istediğimi anlatamadım sanırım. Örneğin;

    http://www.yakuter.com/test/phpseo/sayfa/hakkinda/ –> çalışıyor
    http://www.yakuter.com/test/phpseo/sayfa/hakkinda –> çalışmıyor

    Linklerin sonlarında / olmadığında çalışmıyor, / ekleyip doğru sayfaya nasıl yönlendirebiliriz demek istemiştim.

    teşekkürler cevabınız için bu arada.

     
  • 27 Mart 2009, 22:51

    @Emre Bey dürüst olmak gerekirse ben işin PHP kısmı üzerinde çok fazla yoğunlaştığım için .htaccess üzerinde sadece ihtiyacımı giderecek kadar bilgi sahibiyim. Bu sorunuz üzerine de ilk yapacağım şu olurdu; Normal .htaccess’teki ReWriteRule ^sayfa/(.*)/ sayfa.php?sayfa=$1 [L,NC] kodunun hemen altına bir de ReWriteRule ^sayfa/(.*) sayfa.php?sayfa=$1 [L,NC] şeklinde kod eklemek. Bilginiz olsun diye söylüyorum, bu şekilde localhost’ta denedim ve çalıştı.

     
  • 28 Mart 2009, 17:45

    [L,NC] kodu ne işe yarıyor acaba? sitemap.xml yi yönlendirirken o kodu kullanmıyoruz. Sabit içerikler dışında kullanmak zorundayız sanırım o kodu. Öyle mi?

     
  • 28 Mart 2009, 18:49

    @MujaHeed, ortaya koymuş olduğun varsayım doğru değil. Yani bahsettiği iki şey arasında bir ilişki yok. Sadece ben koymadım ama sitemap satırına [L,NC] koysan da çalışır. [L,NC] nin anlamı son bayrağın harfe duyarlı olmadığıdır. Bu konu çok derin. Detaylarını şurada görebilirsin. Şimdilik gördüğün gibi kullanman yeterli olacaktır.

     
  • 28 Mart 2009, 22:36

    [...] temel olarak nasıl kullanılacağını merak ediyorsanız sizin için hazırlamış olduğum Php SEO Betiği’ni (Script) inceleyebilirsiniz. Webmaster Araçları Yorum Yok 4 Okunma Yazan: Erhan Yakut var [...]

     
  • 34 cafer
    10 Nisan 2009, 13:52

    Sayın Erhan Yakut,
    İlk kez seo ile ilgileniyorum. Sizin deneme betiğinizi apache localhostta kurdum. Her şey tamam ama test sayfasındaki hangi linke tıklasam, “Sayfa bulunamadı” diyor. Nerede hata yapıyorum acaba?

     
  • 14 Nisan 2009, 00:29

    @Cafer Bey, öncelikle bilgisayarınıza kurmuş olduğunus sunucunun yani apache’nin rewrite modülü aktif olmalı. Ancak bunu yaparsanız .htaccess çalışmaya başlar ve aranan sayfalar bulunur ;)

     
  • 18 Nisan 2009, 10:55

    sitemap.php dosyasını .htaccess dosyasındaki ayarla sitemap.xml olarak gösteriyoruz.

    Bir php dosyasını sitemap.xml olarak gösterdiğimizde Google ya da bir başkası site haritasına girdiğinde tüm site içeriğini çekicek çok geniş bir sorgu ve veri alma işlemi olucak. Her çalıştığında bütün sitenin içeriğini yeniden yansıtılacak. Bunun yerine yeni bir yazı eklendiğinde sitemap.xml dosyayı oluşturup, güncelleyen bir şey yapılması daha mantıklı olabilir diye düşünüyorum. Çok güzel bir anlatım ve paylaşım olmuş, iyi kodlamalar.

     
  • 37 cafer
    18 Nisan 2009, 16:17

    İlginize teşekkürler Erhan Bey,
    Bilgisayarı sonraki açışımda rewrite çalıştı. Sanırım rewrite modülünü açtıktan sonra apache serverı yeniden başlatmamışım ve bu yüzden görmemiş.
    Yeni bir soru daha:
    seo.php dosyasındaki fonksiyonu nasıl göstereceğiz. Siteye aynen mi atacağız?
    Şimdiden teşekkürler.

     
  • 19 Nisan 2009, 12:53

    @Musa, söylediğin şey kısmen doğru. Yani sitemap.php’yi sitemap.xml olarak göstermek içeriğin tamamını görüntülemesi anlamına gelmemeli. sitemap.php dosyasında son 10 yazıyı çekersin olur biter. Yani iki durum birbiriyle ilişkili değil. Önemli olan senin sitemap.php dosyasında hangi verileri ne kadar çektiğin.

    Uygulamayı beğenmene sevindim ;)

     
  • 24 Nisan 2009, 11:06

    Saol erhan, senin sayende ogrendik bu işide scpritim vardı tek eksik seoydu snin sayende oda oldu
    da sunu anlamadım seolamada ?

    function seom($s) {
    $tr = array('i','İ','ı','ğ','Ğ','ü','Ü','ç','Ç','Ö','ö');
    $en = array('i','i','i','g','g','u','u','c','c','o','o');
    $s = str_replace($tr,$en,$s);
    $s = strtolower($s);
    $s = str_replace(' ', '-', $s);

    return $s;

    }

    $baslik = "Said Önder Albayrak";
    echo seom($baslik);

    bu gayet sorunsuz calısıor fakat sen ;

    function adres($b) {
    $trc = array('ş','Ş','i','ı','İ','Ğ','ğ','ü','Ü','ö','Ö','O','Ç','ç');
    $enc = array('s','s','i','i','i','g','g','u','u','o','o','o','c','c');
    $b = str_replace($trc,$enc,$b);
    $b = strtolower($b);
    $b = preg_replace('/&.+?;/', '', $b);
    $b = preg_replace('/[^%a-z0-9 _-]/', '', $b);
    $b = preg_replace('/\s+/', '-', $b);
    $b = preg_replace('|-+|', '-', $b);
    $b = trim($b, '-');

    return $b;
    }

    bu şekilde uzatmışsın tahminen /[ vs. yi bos olarak yapıyorda preg_replace niye ?? str_replace de aynı işi gormuyormu ??
    mesela ben


    $o = str_replace(' ', '-', $o);
    yapıorum bosluklar - oluyor ??

     
  • 27 Nisan 2009, 21:58

    @Sa1donder, mesele sadece boşlukları almak değil. Ayrıca insanların başlıklarda kullanabileceği & gibi karakterleri de - karakterine dönüştürmek. Malum kod yazarken insanların başlık olarak ne gireceği belli olmaz. Ayrıca güvenliği tehdit eden şeyler de olabilir. Amacımız harf, sayı ve – dışındaki tüm karakterlerden kurtulmak. Uzatmamın debebi budur ;)

     
  • 02 Mayıs 2009, 02:55

    Basit ama güzel bir örnek vermişsiniz ellerinize sağlık hocam.

     
  • 42 Erkan
    16 Mayıs 2009, 18:01

    Merhaba öncelikle bu göze hoş gelen görünümü ve her yönüyle harika bloğunuzu bir süredir takip etmekteyim. Gerçekten başarılı yorumlarınız var dedikten sonra.

    Benimde bir sorum olacak.

    Phpseo betiğini localhostta çalıştırıyorum ve yazı sayfası düzgün bir şekilde çalışıyor fakat sayfalar yani hakkında ve iletişim bölümüne tıkladığımda sayfanın üst ve alt kısmı sorunsuz fakat veritabanındaki veriyi çekmiyor. Başlık metin kısmından bahsediyorum. Bu sorun sizce neden kaynaklanıyor olabilir.

     
  • 43 Erkan
    16 Mayıs 2009, 18:07

    Birde şunu belirteyim adres satırına :

    localhost/phpseo/sayfa.php?sayfa=hakkinda veya localhost/phpseo/sayfa.php?sayfa=iletisim

    yazdığımda herhangi bir sorun yok.

     
  • 17 Mayıs 2009, 01:30

    @Erkan Bey, eğer sayfa geliyorsa sorun .htaccess’te veya genel yapıda değildir. Fakat global değişkenlerin alımında bir sorun var sanırım. Yani .htaccess ile belirtilen yapıya göre sayfa.php?sayfa=hakkinda ile /sayfa/hakkinda/ aynı şeyler. Fakat sizin sisteminizde sanırım .htaccess tam olarak çalışmıyor. Bunun üzerinde düşünürseniz çözüm bulabileceğinizi düşünüyorum. Bu hatayı ilk kez duyduğum için sorunun genel değil, sizin sisteminizdeki özel bir durumdan kaynaklandığını düşünüyorum.

     
  • 45 Erkan
    18 Mayıs 2009, 17:25

    Cevabınız için teşekkür ediyorum. Sorun appserver’ın eski sürüm olmasından kaynaklanıyordur büyük ihtimal.
    Şu yapıda ^sayfa/(.*)/ baştaki sayfayı sildiğimde
    direk /hakkinda/ olarak çalışıyor.
    Neyse bu sorun sayesinde url yapısını kurcalayarak farklı yapılar kullanarak deneyim sahibide oldum. Buda bir artı oldu benim için :)

     
  • 46 Erkan
    21 Mayıs 2009, 16:37

    Kusura bakmayın tekrar rahatsız ediyorum.
    Bu betiği localhostta çalıştırıp sayfaları açabiliyomusunuz sadece bendemi bu sorun.

    .htaccess düzenlemesinde :
    ^sayfa/(.*)/ sayfa.php?sayfa=$1 [L,NC]
    Link düzenlemesi :
    localhost/phpseo/sayfa/hakkinda/
    Bu şekilde çalışmıyor fakat

    .htaccess düzenlemesinde :
    ^(.*)/ sayfa.php?sayfa=$1 [L,NC]
    Link düzenlemesi :
    localhost/phpseo/hakkinda/
    Bu haliyle sorun yok

    Fakat ben ilk örnekteki haliyle kullanmak istiyorum olmuyor. Appserver kullanıyorum ve sürümü değiştirdim şuanda sürümüm 2.5.9 Tekrar denememe rağmen olmadı. Bu sorunu yaşayan yada benim bu sorunu yaşamamam için önerisi olan varmı acaba.

     
  • 24 Mayıs 2009, 09:55

    @Erkan Bey, malesef sisteminizle ilgili bir sorun olduğunu düşünüyorum. Belki internette bir alanda deneyip sorunun betikte mi yoksa sizde kurulu Appserver’da mı olduğunu görebilirsiniz.

     
  • 27 Mayıs 2009, 12:23

    Mükemmel bir çalışma Erhan. Çok teşekkürler. Php ile SEO uyumlu web siteleri yapmak isteyenler için en iyi çalışma diyebilirim.

     
  • 30 Mayıs 2009, 18:07

    Süper bir çalışma. Bunu script olarak kullanılabilir. Geriştirilebilir ve seo açısından da çok güzel..

    Hazırlayanların ellerine sağlık :)

     
  • 02 Haziran 2009, 15:20

    Merhaba Arkadaşlar Çalışmanız Güzel Olmuş Teşekkürler…
    Benim Sorunum Urlyi
    örnegin
    kullanici.sitem.com/kullanici/kullaniciadi ( daha açık anlatacak olursak

    site.com/kullanici/kullaniciadi şeklinde çagırdıgım zaman çalışmıyor
    ancak
    site.com/kullanici/?w=kullaniciadi&u=kullaniciadi çeklinde çagırdıgımda çıkıyor.

    .htaccses de ilgili alan

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^profiles/([^/]+)/([^/]+)?$ /profile.php?u=$1$2 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^profiles/?$ /profile.php [L]

    Yardımcı Olursanız Sevinirm :)

     
  • 51 Sedat
    15 Haziran 2009, 03:39

    Bilgiler ve dosyalar için teşekkürler. Bu bilgiler en basit şekilde verilebilirdi. Sayenizde epeydir üşendiğim bir işe başlamaya karar verdim.

     
  • 52 oasis
    19 Haziran 2009, 18:40

    acaba yakın zamanda bunun veritabanına kayıt edebilen ve kontrol yapna bir örneğine yazabilirmisiniz??

    yani formdan aldığı bilgilerle kullanıcıyı veritabanına kayıt edip daha sonra uyegiris.php ile kullanıcı formda username kısmına ne yazdı ise onu benimsite.com/username şeklinde siteye online yapmak ..

    veya kullanıcı formdan bir haber giricekse baslık==bu haber baslığı içerik==falan filan gönder dediği zamn bunu hem veritabanına kayıt edip
    hemde haber benimsitem.com/haber/bu-haber-basligi.html şeklinde yazabilmek

    makale süper bu soruma cevabını bekliyorum çok önemli..saygılar teşekkürler

     
  • 53 oasis
    22 Haziran 2009, 16:10

    erhan bey benim .html lerden oluşan basit bi sitem var hakkimizda.html
    iletisim.html egitim/universiteler.html gibi..
    denedim olmadı bunları nasıl hakkımızda/ iletisim/ .html olmadan gösterebilirim nasıl bi değişiklik yapmam lazım htaccess de
    teşekkürler saygılar

     
  • 01 Temmuz 2009, 13:26

    @oasis, söylediğin gayet mantıklı bir istek, değerlendirmekte fayda var ;)

    .html sitene gelirsek şöyle bir kod işine yarayabilir

    RewriteEngine On
    RewriteRule ^hakkimizda/ hakkimizda.html [L]

     
  • 01 Temmuz 2009, 13:38

    @Tayfun, .htaccess’te bir sorun var gibi. Şu kod üzerinde çalışmayı deneyebilirsin.

    RewriteEngine On
    ReWriteRule ^kullanici/(.*)/ profile.php?u=$1 [L,NC]

     
  • 13 Ağustos 2009, 13:31

    önce anlamakta zorluk çektim ama inceledikçe hoşuma gitti ama bir sorum olacak anladığım doğruysa linkleri seolayıp tabloya alıyorsun sonra tablodan seolanmış linki çağırıyorsun. benim aklıma takılan yeni yazı eklerken neler yapılması gerektiği olacak burada yapılmış bir iş var ama yazı nasıl eklenecek. birazda onu anlatsanız

     
  • 14 Ağustos 2009, 17:12

    Gerçekten harika bir makale. Birde etiket mantığını kullansanız 1 numaralı seo olucak sanırım :)

     
  • 20 Ağustos 2009, 01:41

    Hocam verdiginiz bilgiler gercekten cok faydali.Sormak istedigim su benim sitemde bir tane seo kurulu halde ama sizin verdiginiz bana daha mantikli.Bu seonun üzerine sizin seoyu kurmam mümkün olurmu?Sonrada telafisi olmayan bir hatayla karsilasmak istemiyorum.Bu konu hakkinda beni aydinlatirsaniz cok memnun olurum

     
  • 20 Ağustos 2009, 03:06

    Hocam bi problemle karsilastim ”Betik klasöründe bulunan veritabani.sql dosyasını oluşturacağınız veritabanında çalıştırın”diyorsunuz tüm ayarlari yaptim ama sitemin ismini yazdigim zaman http://www.yakuter.com/test/phpseo/anasayfa/ burasi cikiyor.Cözemedim sorunu yardimci olursaniz,bu seo’dan faydalanmak isterim.

     
  • 29 Ağustos 2009, 15:17

    Sorunlarınızı Yardım Forumlarımıza yazabilirsiniz.

    SEO Teknikleri Yönetimi

     
  • 61 Yavuz BAYAR
    10 Eylül 2009, 17:34

    Aynı haber basligi yani adres tekrarlanirsa n olacak? ayni baslikli haberden 2 tane olursa nasil bir cozum uretmemiz gerekecek.. tesekkurler.

     
  • 62 Yavuz BAYAR
    10 Eylül 2009, 17:35

    $caner

    site adını belirten bir değişken var orda yolu doğru yazdığınıza emin olmaslınız.. ayar.php içinde.

     
  • 63 ibrahim
    27 Eylül 2009, 13:22

    hocam seoyu çok güzel anlatmışsınız ancak bir sorum olacak. seo.php dosyasını sisteme nasıl kattığınızı anlamadım yani seo.php nasıl etkin oluyor hiç bir yerde göremedim aydınlatırsanız memmun olurum

     
  • 13 Ekim 2009, 12:11

    Gerçekten güzel bir çalışma. Bu bilgileri paylaştığınız için teşekkür ederim.

     
  • 21 Ekim 2009, 18:29

    Çok faydalı bir yazı, teşekkürler. WordPress blogumun kalıcı bağlantı yapısı sizin anlattınız gibi. Fakat bir çok yerde .htaccess dosyasına yapılan müdahalelerle seo’ ya katkı yapıldığından bahsediliyor. Bunu WP sistemler için nasıl yapabileceğimi yorumda yada yeni bir yazıda anlatabilir misiniz?

     
  • 66 cem
    28 Kasım 2009, 13:58

    .htaccess in yaptıgı işlemi yapacak bir php betiği yazılabilirmi acaba ?
    bunun nedeni linux serverlarda sorunsuz kullanabiliyoruz ama win serverlada kullanmıyor olmamız ama bir php betiği yazarak win serverlar içinde kullana bilir yapılabilirmi !!!

     
  • 08 Aralık 2009, 02:00

    Bunun için PHP betiği ile uğraşmak yerine bazı ISS yamaları var. Onlardan faydalanmanızı tavsiye ederim. ISS ile beraber PHP kodlamayı düşünürseniz aradığınız sonuca ulaşabilirsiniz. Bunu düşünerek aramalarınıza devam edebilirsiniz.

     
  • 68 Analitik SEO
    23 Aralık 2009, 12:32

    Erhan merhaba,

    phpseo betiğini şu sıralar zaman bulursam afilli bir hale getirmeyi düşünüyorum.

    Etiket sistemi
    Sayfalama
    İçerik yığını
    Site haritası
    rss

    yönetim paneli
    kategori düzeni
    icerik düzeni
    sayfa düzeni

    şeklinde bir çalışma yapacağım, sizinle iletişim kurup kaynak dosyaları ulaştırırım.

    Şimdiden kolay gelsin. :)

     
  • 69 Semih
    22 Şubat 2010, 13:22

    Öncelikle bu faydalı anlatım için teşekkür ederim. Benim sitemap ile alakalı bir sorum var. Sizce sitemap hangi sıklıkta pinglenmeli? Günde 1-2 kere mi yoksa her yeni içerik eklendiğinde mi?

     
  • 21 Mart 2010, 20:23

    kurmakda sorun yaşıyordum bu php sürümünden kaynaklanıyormuş kurdum ama bu son php sürümünde çalışmıyor hata weriyor bunu son php sürümüne göre düzenleyebilirmisiniz acaba

     
  • 09 Nisan 2010, 18:04

    Hocam çok güzel anlatmışsınız. Deneme yapayım localde teşekkürler.

     
  • 10 Haziran 2010, 23:59

    Benim sorunum htaccess dosyasını siteye koyduğum anda yönetim panelinde kullandığım metin editörünün içine index sayfası geliyor. Yani yazı eklemek için yazı ekleye tıkladığımda açılan sayfada metin editörünün içinin boş olması gerekirken index sayfasının kopyası geliyor otomatik olarak. Çok uğraştım sonunda “htaccess” dosyasındaki koddan kaynaklandığını farkettim.
    “ReWriteRule ^(.*).html yazi.php?yazi=$1 [L,NC]” bu konu hakkında yardımcı olurmusunuz? (Editörü değiştirmekten başka)

     
  • 13 Haziran 2010, 13:22

    [...] betiğinin daha detaylı anlatımını ve indirebileceğiniz adresleri SEO Teknikleri‘ndeki Php ile SEO’lu Sistemler Yazmak ve Php SEO Betiği başlıklı makalemde bulabilirsiniz. Güle güle kullanmanız dileğiyle [...]

     
  • 74 hamdullah
    13 Haziran 2010, 21:07

    slm öncelikle kodlar için çok tşk ediyorum.
    script sizin test sayfasında hakkında, iletişim çalışıyor ama download dosyasında menüdeki hakkında ve iletişim sayfası çalışmıyor(çalışmıyor derken veri tabanından gerekli bilgileri almıyor) anasayfa ve devamı için tıklayın yazısı sorunsuz çalışıyor fakat manuel olarak http://localhost/seophp/sayfa.php?sayfa=iletisim veya iletisim yerine hakkinda deyince çalışıyor. Yani veri tabanı ile birproblem yok. Ama http://localhost/seophp/sayfa/iletisim/ çalışmıyor

    Kısacası test sayfanızdaki dosyaları zipleyip tekrar download a sunabilirmisiniz? Test sayfası sorunsuz çalışıyor.

     
  • 75 ibrahim
    11 Temmuz 2010, 00:13

    iyi akşamlar en azından simdi akşam öncelikle şunu belirtmeden gecemem harika bir iş çıkarmışsınız. ama merak ettiğim bir şey var arkadaslar genelde atlamışlar yada biliyorlar. $site=”http://localhost/phpseo”; buradan anladığım localde sorun yok peki siteye attığımız zamanda bu adresi yine vermek zorundamıyız biliyorsunuz css ve resim kodları sef link olunca bunu yapmak gerekiyor galiba genel bir şey yazamazmıyız yada sadece slash koymak yeterli olur mu umarım derdimi anlatabilmişimdir.

     
  • 05 Ekim 2010, 18:40

    Tebriklerimi sunarım.

     
  • 09 Kasım 2010, 00:23

    daha öncede sormuş olan arkadaşlar var sonuca kavuşturuldumu bilmem ama

    RewriteRule ^urnler/(.*)/ urunler.php?urunler=$1 [L,NC]

    kullanıldığında urunler php sayfası ile $_GET["urunler"] sonucu boş dönüyor ayrıca siz sunucuda deneyin demişsiniz sizin betiği sunucuda denediğimde sayfa/hakkımızda/ gibi durumlarda da $_GET["sayfa"] boş dönüyor.

     
  • 78 Ahmet
    04 Mart 2011, 00:00

    Çok güzel bir anlatım olmuş elinize sağlık. Çoğu sitede bu tip makale var ama yanlış yada eksik yazılmış. Fakat şu xss açığını gidermek için ne yapmamız gerekli?Bir fonksiyon kullanarak (örn. gelen değerleri html ve java script taglarından arındıran bi fonksiyon) bu açığı gidermek mümkünmüdür?İyi çalışmalar dilerim…

     
  • 31 Mart 2011, 18:59

    Çok saolun hocam paylaşım için . Bu arada siteniz bağımlılık yaptı :):)

     
  • 03 Nisan 2011, 03:46

    #78 Ahmet
    Bunu İlgili Bağlantı fonksiyonuyla gerçekleştirebilirsin.

     
  • 81 web
    22 Mayıs 2011, 10:48

    Çok başarılı Tebriklerimi sunarım.

     
  • 82 Görkem Karadoğan
    23 Haziran 2011, 16:35

    Merhabalar ufak bir sorum olucak her sayfada farklı bir meta tag olucaksa o zaman bız en basta yazıyı eklerken veya sayfa eklenırken otomatik olarak veritabanına sizin belirttiğiniz tablolara ekleme yapmalıyız kı meta taglar çıksın dımı ?

     
  • 08 Temmuz 2011, 14:35

    Yazınız sayesinde kendim için yazdığım ufak bir yazı ekleme scriptini rewrite ‘lı hale getirdim çok teşekkür ediyorum. Sormak istediğim şu ;

    oku.php?id=$1&title=$2 ‘yi (.*)-(.*).html olarak rewrite ettim yalnız aynı işlemi
    kategori.php?id=$1&id=$1 (.*)-(.*).html veya başka bir şekilde rewrite edemedim. Kullandığım htaccess dosyası aşağıda

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^index.html index.php [L]
    ReWriteRule ^sayfa/(.*)/ index.php?sayfa=$1 [L,NC]
    ReWriteRule ^(.*)_(.*).html oku.php?id=$1&title=$2 [L,NC]
    reWriteRule ^(.*)_(.*).html kategori.php?id=$1&title=$2 [L,NC]

    ReWriteRule ^sitemap.xml sitemap.php

    Nasıl yapabilirim bunu ?

     
  • 08 Temmuz 2011, 14:46

    htaccess dosyamı değiştirdim ve şu an kategori.php?id=$1&title=$2 ‘yi (.*)-(.*).html olarak değiştirdiğimde örneğin ; 1-Genel.html diye 1 numaralı id’ye sahip genel kategorisine ulaşabiliyorum. teşekkürler.

    Düzelttiğim .htaccess :

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^index.html index.php [L]
    ReWriteRule ^sayfa/(.*)/ index.php?sayfa=$1 [L,NC]
    ReWriteRule ^(.*)_(.*).html oku.php?id=$1&title=$2 [L,NC]
    reWriteRule ^(.*)-(.*).html kategori.php?id=$1&title=$2 [L,NC]

    ReWriteRule ^sitemap.xml sitemap.php

     

Yorum Yapın

oktay dibek: Yeni takip ediyorum sitenizi benimde samsung servisi sitem var bu set işe yarıyor. TEŞEKKÜRLER...
rize haberleri: Mükemmel bi rehber olmuş hemen indiriyorum hocam,teşekkürler....
Selman: Elinize sağlık gerçekten uğraşmışsınız. Bu sektörde bir arayış içinde olanlara çok faydalı olacağına inanıyorum......
Abdullah: Vermiş olduğunuz bilgiler için teşekkür ederiz. Ama bazı siteler yoruma kapılı güncellerseniz sevinirim....
Md: Kitabı okudum. Emeğinize sağlık, sizde daha birçok fikir olduğunu umuyorum :)...
 
licensewordpressrssalexaxhtmlcss
Google Site Map | SEO Teknikleri | Seo

Powered by 2007 - 2011 SeoTeknikleri.com

Hosting Sponsoru Daha.net