Kalıcı Bağlantı (permalinks) ayarını %postname%.html olarak değiştirdim. İşte sorun bununla ilgili. Google birkaç yazımı derhal yeni URL’si ile beraber kayıtlara geçirdi ama bunlar şimdilik sadece birkaç tane. Geri kalanları için Google’dan gelen ziyaretçiler girmesi gereken sayfalarla değil, direkt ana sayfa ile karşılaşıyorlar.
Bu sorunun çözülmesi .htaccess dosyasındaki kodlara bağlı. Öyle bir şey yapmak lazım ki başka yerlerde olan çeşitli yazılarıma ait linklerime tıklandığında o linkler şimdi geçerli olan html’li linklere yönlensin (redirecting).
Benim sitem Windows’lu sunucularda barındırıldığı için Linux ile ilgili kodlar işe yaramıyor. IIS isapi rewrite filan kodları gerekiyor. İki gün çok araştırdım bir çözüme ulaşamadım. Aslında “redirect” konularında çözüm vardı ama bunlar belirli tekil sayfalar içindi. Genele uygulayamadım.
Güncelleme: 22 Şubat 2010
Yukardaki sorunun çözümünü aşağıda linkini verdiğim yazımda en son kısımda anlatmış bulunuyorum. Orada bakın, son kısımdaki bağımsız tek tek yönlendirme kodu ile yukarda anlattığım türden sorunlar kolayca halledilebilir.
http://devletli.com/wordpress/site-yonlendirmesi-yapmak-nasil-olur
Sorun F Blog’dan Ferhad tarafından gönderilen bir kod ile %99 çözülmüştür. Sadece tag olarak google arşivlerine geçen URL’lerde işe yaramıyor. Bu ise problem değil çünkü o şekilde Google’un arşivlediği yazılarım çok az. herhalde etiketlerin yazıların yanında görüntülenmesine izin vermediğim için Google onları arşivlemiyor. Bundan sonra görüntülesem iyi olacak.
Kod aşağıda. Ferhad’a teşekkür ederim.
Dikkat: Bu kod .htaccess dosyasına konulmuyor. Site şablonunda header kısmına konuyor. Ben en üste koydum.
<?php
$url = $_SERVER['REQUEST_URI'];
$url_uzunluk = strlen($url);
$son_karakter = substr($url,$url_uzunluk – 1,$url_uzunluk);
if($son_karakter == "/")
{
$yeni_url = substr($url,0,strlen($url)-1).".html";
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: ".$yeni_url );
}
?>
Sana kodun çalışmasından da bahsedeyim.
Kod önce sayfanın adresini alır ve adresin uzunluğunu ölçer. Adres uzunluğunun 1 eksiğindeki yani adresin sonundaki karakteri alır. Sonra da karşılaştırma yapar ve alınan karakter / ise adres uzunluğunun bir eksiğine kadar olan metni alıp buna .html ekler.
Daha sonra da sunucu için başlık bilgilerine sayfanın kalıcı olarak yönlendirildiğini belirten bir bilgi ekler ve yönlendirildiği adresi ekler.
Sadece son karaktere bakarak iş yaptığından yazının yorum sayfalarına gelen ziyaretçileri yönlendiremez, yani alivesitesi.com/yazi/comment-page-2 şeklinde adreslerde kod yan yatar. :) Olsun 404 olunca bunları Google siler zaten nasılsa eski bağlantı, orijinal yazının yönlendirmesi çalışacak.
Bu arada bu kod nasıl ana sayfada sorun çıkarmıyor anlamadım. :) Ana sayfaya …sitesi.com/ şeklinde girince sondaki / yerine .html koyması gerekliydi, sonradan fark ettim ama koymuyor nasılsa.
Bu arada ana sayfada tek iki kutucuk olması iyi görünmüyor, eskisi gibi son yazıların sayfa boyunca görünmesi daha iyi olur.
gerek yoktu aslında .html yapmana.
Ferhadın verdiği kodu kaldırdım çünkü URL’leri index.php uzantısı ile birlikte gösteriyordu. Bu bir şey değil. Esas sorun, Google arşivlerine geçen yeni URL kayıtlarının da o şekilde olduğunu gördüm. Artık zamanla yavaş yavaş hallomasını bekleyeceğim. başka çare yok.
Bir hafta içinde Google bütün yazılarımı yeni URL’leri ile arşivlerinde yeniledi. :) Şimdi tek sıkıntı Google dışında, çeşitli web sitelerindeki eski linklerimde. :(