• 30-06-2010, 08:36:13
    #1
    Herkese günaydın!
    İngilizce ve Türkçe olmak üzere çift dilli bir site yaptım. Google'da ki dizinlerin karışmaması ve (duplicate-content) sayfa veya içerik tekrarı olmaması için .htacces aracılığı ile türkçe bölümü /tr altına ingilizce bölümü ise /en altına attım. Gerçekte ise /tr veya /en şeklinde klasörler mevcut değil. Yani session vasıtasıyla bunları .htaccess'ten ayarlıyorum.
    Örnek verecek olursak:

    siteadi.com/lang=tr==> burası orjinal türkçe sayfası. .htaccess ten bunu siteadi.com/tr olarak ayarlıyorum. aynı şekilde ingilizce sayfası içinde siteadi.com/lang=en siteadi.com/en şekline dönüyor. Web sitesinde varsayılan dil türkçedir. Eğer kullanıcı isterse inglizceye dönebilir. Ama dediğim kendisinin bir talebi olmadığı sürece default dil türkçedir.
    Şimdi geldik en canalıcı noktaya:
    Yaptığım bu sitenin sayfalarını google'ye kayıt etmek için sitemap oluşturdum. Hem Türkçe sayfaları hemde İngilizce sayfaları ayrı ayrı listelettim. Bu gün kontrol ettiğimde ise siteadi.com/tr ile siteadi.com/en sayfalarının aynı yani türkçe olduğunu gördüm. Bu durumdan da sanırım şu anlaşılıyor ki çok saçma google'nin botları session dan etkilenmiyor mu? Durumu daha iyi anlamak için http://www.delorie.com/web/lynxview.html sitesini kullanıp yaptığım siteyi google bot gibi taradım. Sonuç aynı! Sitenin ingilizce bölümüne geçtiğim zaman içeriğin türkçe olduğunu görüyorum. Bu konu ile ilgili bilgisi olan varmı arkadaşlar.
    Üzerinde çalıştığım siteye burdan ulaşabilirsiniz.
  • 30-06-2010, 08:58:31
    #2
    evet google botları session almaz, zaten bu birçok yerde yazıyor.

    şöyle bir çözüm getirebilirsiniz:

    URL'lerinizi şu yapıya dönüştürün: siteadi.com/#dil#/#sayfa#/

    bunun için de şöyle bir htaccess tanımlayın:

    Alıntı
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*?)/(.*?)/$ index.php?dil=$1&sayfa=$2 [L]
    </IfModule>
    daha sonra sayfa içindeki $_GET['dil'] değişkenine göre sayfanın diline karar verip içeriği bastırabilirsiniz
  • 30-06-2010, 09:50:32
    #3
    THR
    Üyeliği durduruldu
    ip adresinden veritabanında tutarsan daha etkili çözüm olur
  • 30-06-2010, 10:02:58
    #4
    THR adlı üyeden alıntı: mesajı görüntüle
    ip adresinden veritabanında tutarsan daha etkili çözüm olur
    o şekilde çok yorulur diye düşünüyorum

    günlük 10k hit olduğunu düşünsene
  • 30-06-2010, 10:52:49
    #5
    Üyeliği durduruldu
    bot cookie tutup napcak ki. useragenta gore işlem yaptırabilirsiniz.
  • 30-06-2010, 11:13:25
    #6
    THR
    Üyeliği durduruldu
    by_antiseptic adlı üyeden alıntı: mesajı görüntüle
    o şekilde çok yorulur diye düşünüyorum

    günlük 10k hit olduğunu düşünsene
    nolacakki hocam 10k hit düzgün optimizasyonla php için mesele mi?

    delly nin dediği gibi useragent varken ipye ne gerek var (sen yazana kadar hiç aklıma gelmedi hocam )
  • 30-06-2010, 11:25:37
    #7
    user_agent ile nasıl yapıcaksınız anlamadım. arkadaş google botlarına hem türkçe hem de ingilizce sayfaları göstermek istiyor, sadece ingilizce değil.

    bence en mantıklı çözüm, elinde zaten hem türkçe hem ingilizce sayfalar olduğuna göre ikisini de ayrı ayrı kullan session falan olmadan, by_antiseptic in dediği gibi
  • 30-06-2010, 13:02:45
    #8
    Invictus adlı üyeden alıntı: mesajı görüntüle
    user_agent ile nasıl yapıcaksınız anlamadım. arkadaş google botlarına hem türkçe hem de ingilizce sayfaları göstermek istiyor, sadece ingilizce değil.

    bence en mantıklı çözüm, elinde zaten hem türkçe hem ingilizce sayfalar olduğuna göre ikisini de ayrı ayrı kullan session falan olmadan, by_antiseptic in dediği gibi
    User agent olmaz. Sonuçta google botu sadece tek dille geliyor. Birden fazla dille gelmiyor. Bu arada hem türkçe hemde ingilizce sayfalar yok. Yani tek bir sayfa var. Bir tane dil klasörü oluşturdum. Bunun içinde iki tane dil dosyası var. O anki session neyse sistem o dosyayı çağırıyor.
    Örnek:
    lang_tr.php ve lang_en.php şeklinde iki tane dosyam var. Her iki dosyada aynı değişken var. Şöyleki:

    $anasayfa['lang']['anasayfa'] şeklinde bir değişkenim var. Bu değişken lang_en.php'de şöyle yüklü: $anasayfa['lang']['anasayfa']="HOMEPAGE";
    lang_tr.php dosyasında ise şöyle: $anasayfa['lang']['anasayfa']="ANASAYFA" şeklinde. Sitenin içinde ise bu değişkeni şöyle kullanıyorum:
    <?php 
    session_start();
    
    if ($_GET['lang']=='tr') //tabi bu mantıksal sorgulama $_SESSION değişkeni içinde tanımlanıyor. Yormasın diye yazmadım.
    include ('lang_tr.php');
    else
    include ('lang_en.php');
    
    print $anasayfa['lang']['anasayfa']; //Şu durumda oturum hangi dilde ise bu değişken o stringi yükleyecek.
    
    
    ?>
    İki farklı klasör oluşturursam şuana kadar yaptığım çalışmanın bir önemi kalmayacak yada kurduğum mantıkta ciddi değişiklikler yapacağım. Bu google botunu kandırmanın başka bir yolu yok mu?
    Anlamamadığım bir nokta var:
    Ben oturumu arka planda kendim düzenliyorum google veya herkimse benim ona sunduğumla yetinmek zorunda. Sonuçta google veya diğer arama motorları öyle yada böyle web sayfalarına bir tarayıcı ile bağlanıyorlar. session olayını nasıl aşar?