Apache URL Rewriting ve PHP ile SEO uyumlu URL üretimi |
|||||||||||||||||||||||||||||||||||||||||||||
Apache URL Rewriting ve PHP ile SEO uyumlu URL üretimiUrl rewriting SEO ile ilgilenenler için önemli bir konu. SEO uyumlu adresler SEO için onlarca gerekli düzenlemeden sadece biri.Url rewriting konusuna uzak olanlar için kısaca açıklayalım: Url rewriting kısaca adresleri istediğimiz gibi değiştirip takla attırmamıza yarar. URL rewriting örnekleri: anasayfa => anasayfa.php anasayfa.html => anasayfa.php anasayfa/10 => anasayfa.php?id=10 anasayfa/gundem/10/ => gundem/anasayfa.php?id=10 anasayfa/gundem/10/haber-basligi => gundem/anasayfa.php?id=10 Yukarıdaki örneklerden en alttaki SEO uyumlu bir URL'dir. Çünkü adres haber başlığını içeriyor. Bizim yapacağımız SEO uyumlu bir örnek yapmak olacak. Url Rewriting işlemini daha kolay yapabilmek için Regular Expression kullanmak daha akıllıca. Fakat Regular Expression hiç bilmeyenler aşağıdaki liklerden öğrenebilirler. - http://httpd.apache.org/docs/2.0/misc/rewriteguide.html - http://regexlib.com/ Her şeyden önce Apache sunucusunda Url Rewrite yapabilmek için Apache'nin rewrite modülüne göre derlenmemiş ise derlememiz ve ufak bir ayar yapmamız gerek. Derleme işlemi (Default olarak rewrite modülü derlenmiştir) : Derleme işlemi sonucunda mod.rewrite.so adında bir dosya oluşuyor. Bu dosya bizim modülümüzün çalışması için gerekli. Apache'yi rewrite modülüne göre derlemek için -enable-rewrite=shared -enable-spelling= shared -enable-status= shared parametrelerini eklenerek derleme işleminin yapılması gerek. Modülü aktif etme işlemi: Apache'nin ana dizininde httpd.conf dosyasında modülü aktif etmek için aşağıdaki satırları bulun; #LoadModule rewrite_module modules/mod_rewrite.so #AddModule mod_rewrite.c İlk satır modülü yüklerken ikinci satır modülü aktif hale getiriyor. Satırların başında varsa '#' karakterlerini kaldırıp dosyayı kaydedin ve Apache sunucunuzu restart edin. Rewrite Modülünü kullanma işlemi: Apache virtual host kullandığından web yöneticilerinin kendilerine has özellikler yaratabilmesine olanak verir. Bunu yapabilmek için web sayfanızın ana dizininde text editör ile .htaccess adında bir dosya oluşturup rewrite işlemini yapacak kodumuzu yazmaya başlayalım. ( not: '#' karakteri comment yani yorum yapmamıza yarar) Örnek 1: anasayfa => anasayfa.php şeklinde bir url rewrite yapabilmek için aşağıdaki kodumuzu yarattığımız .htaccess dosyasına yazıp kaydedelim. #rewrite motoru çalıştırılyor RewriteEngine On # anasayfa ile başlayan bir sayfa istenirse anasayfa.php dosyasını çağırıyoruz ve kuralı regular expression ile uyguluyoruz RewriteRule ^anasayfa/? anasayfa.php [NC,L][NC,L] komutları birer flag'dır. 'NC' adresin case insensititve olmasını sağlar. 'L' ise rewrite kuralı uygulanırsa başka bir kuralın geçerliliğini kaldırır. Örnek 2: anasayfa/10 => anasayfa.php?id=10 RewriteEngine On RewriteRule ^anasayfa/(\d+)/? anasayfa.php?id=$1 [NC,L]Burada (\d+) 1, 10, 100 gibi sayıları temsil eden değerleri almamıza yarıyor. Parantez içinde bulunan değerler otomatik olarak sırasına göre $1'e, $2'e, $3'e... kaydediliyor. Fakat bu öreneğimizde sadece bir tane değişken kullanığımız için $1 bizim için yeterli. Alınan sayıyı id değişkene eşitleyip adresimizi üretiyoruz. Bunu da Regular Expression kullanarak yaptık. /? ise adresin sonuna '/' karakteri koyulup koyulmadığını kontrol eder ve her iki durumuda kabul eder. Örnek 3: anasayfa/gundem/10/ => gundem/anasayfa.php?id=10 RewriteEngine On RewriteRule ^anasayfa/\w+/(\d+)/? gundem/anasayfa.php?id=$1 [NC,L] \w+/ 'gundem' değerini temsil ediyor. (\d+) ve $1 '10' değerini temsil ediyor. Şimdi SEO uyumlu URL adresimizi yaracağımız RewriteRule yazalım. Örnek 4: anasayfa/10/haber-basligi.html = > anasayfa.php?id=10 RewriteEngine On RewriteRule ^anasayfa/(\d+)/\w+/? anasayfa.php?var1=$1 [NC,L](\d+) ve $1 '10' değerini temsil edecek. \w+ 'haber-basligi.hmtl' değerini temsil edecek. Bir başka SEO uyumlu URL rewrite örneği: Örnek 5: anasayfa/gundem/10/haber-basligi => anasayfa.php?type=$1&id=$2 RewriteEngineOn RewriteRule ^anasayfa/(\w+)/(\d+)/\w+/? anasayfa.php?var1=$1&var2=$2 [NC,L](\w+) ve $1 'gundem' değerini temsil edecek. (\d+) ve $2 '10' değerini temsil edecek. Örnek 6: Şimdi aşağıdaki adreslerin hepsini değiştirebilecek RewriteRule yazalım: anasayfa/gundem/10/haber-basligi => gundem/anasayfa.php?id=10 anasayfa/10/haber-basligi.html => anasayfa.php?id=10 anasayfa => anasayfa.php RewriteEngineOn RewriteRule ^anasayfa/(\w+)/(\d+)/\w+/?anasayfa.php?type=$1&id=$2 [NC,L] RewriteRule ^anasayfa/(\d+)/\w+/? anasayfa.php?id=$1 [NC,L] RewriteRule ^anasayfa/? anasayfa.php [NC,L]Burada dikkat etmemiz gereken kuralları sırasıyla koymak. Çünkü uygulanan her kural diğerinin çalışıp çalışmayacağını etkiliyor. En iyi yöntem karmaşıktan basite doğru alt alta sıralamak. Rewrite modülü bu şekillde kullanılabiliniyor. Bu kuralları tabiki geliştirmek mümkün. Php ile SEO uyumlu adresler yaratma (6. örnekten devam ): Şimdi SEO uyumlu adreslerimizi link olarak yaratmamız gerekiyor. Mesela haber başlığını otomatik olarak SEO uyumlu adrese dönüştürecek fonksioyonu PHP ile yazmaya başlayalım. Yapacağımız iş oldukça basit. Örnek: Ömür Uzatan Evler => omur-uzatan-evler Şemsi Efendi Pasajı = > semsi-efendi-pasaji Bilinmeyen **. Dünyalar = > bilinmeyen-dunyalar Türkçe ve '*' gibi özel karakter içeren başlıkları düzeltmemiz gerek. function url_baslik_yarat ($baslik="") { //değiştirelecek türkçe karakterler $TR=array('ç','Ç','ı','İ','ş','Ş','ğ','Ğ','ö','Ö','ü','Ü'); $EN=array('c','c','i','i','s','s','g','g','o','o','u','u'); //türkçe karakterleri değiştirir $baslik= str_replace($TR,$EN,$baslik); //tüm karakterleri küçüklür $baslik=mb_strtolower($baslik,'UTF-8'); // a'dan z'ye olan harfler, 0'dan 9 a kadar sayılar, tire (-), // boşluk ve altçizgi (_) dışındaki tüm karakteri siler $baslik=preg_replace('#[^-a-zA-Z0-9_ ]#','',$baslik); //cümle aralarındaki fazla boşluğü kaldırır $baslik=trim($baslik); //cümle aralarındaki boşluğun yerine tire (-) koyar $baslik= preg_replace('#[-_ ]+#','-',$baslik); return $baslik; }Yukarıdaki url_baslik_yarat fonksiyonu sadece (omur-uzatan-evler) gibi bir başlık oluşturmak için kullacağız. Url adresinin kalan kısmını (ör: anasayfa/10/omur-uzatan-evler.html ) oluşturmak için başka bir fonksiyon yazalım: function full_url_yarat ($id, $baslik, $type="") { //type bilgisi varsa uygun url üretilir if ($type!="") return sprintf('anasayfa/%s/%s/%s.html',$type,$id,url_baslik_yarat($baslik)); else return sprintf('anasayfa/%s/%s.html',$id,url_baslik_yarat($baslik)); }Bu fonksiyonu kullanarak 2 farkli link oluşturalım: <html><head></head> <body> <?php $link1=full_url_yarat(10,"ŞemsiEfendiPasajı",'gundem'); $link2=full_url_yarat(11,"Bilinmeyen**.Dünyalar!!"); //yaratılanlinkleriekranalinkolarakgösteriyoruz. echo"<ahref='\"".$link1."\"'link1.="\" >".$link1."</a>"; echo"<ahref='\"".$link2."\"'link2.="\" >".$link2."</a>; ?> </body> </html>Yazdığımız bu php kodlarını anasayfa.php olarak kaydedip internet tarayacımızda çıktısına bakalım: ![]() Linklere tıklandığında id ya da type değerlerini alıp almadığını kontrol eden anasayfa.php sayfamızı basitçe oluşturalım.(RewriteRule kısmında anasayfa.php diye belirtmiştik) id ve type değerlerini adres satırında göderdiğimiz için bu değerleri GET metodu ile alacağız. Eğer çalışırsa aynı zamanda Url Rewriting kodlarımız da çalışmış demektir. anasayfa.php kodumuz: //yarattığımız URL'deki verileri alıp ekrana bastırıp kontrol edelim. if(isset($_GET['id'])) echo'id:'.$_GET['id'].'<br>'; if ( isset ( $_GET['type'] ) ) echo 'type: '.$_GET['type']; İlk linkte ve ikinci linke tıklağımda çıkan sonuç: ![]() Yaptığımız örnekte dikkatinizi başlığın sunucu tarafında hiçbir işlem yapılmadığı olabilir fakat bunun gibi başlıklar arama motorları için anlamlı bir durum. PHP ile SEO uyumlu Url oluşturma bu şekilde yapılabilir. Siz de kendinize göre uygun başlıklar içeren adresleri Php ile bu teknikle yapabilirsiniz. Uygulama ile ilgili tüm dosyaları buradan indirebilirsiniz. |
|||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||
|
May 2013 (1)
July 2010 (1)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
July 2010 (1)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
Jquery ve css ile hare ..
Javascript'de nesne li ..
MySql veritabanı bağla ..
Jquery ile dinamik res ..
PHP ve Jquery ile Goog ..
Jquery ve PHP ile Ajax ..
XAMPP ile PEAR MDB2 Pa ..
Bir Tasarım Şablonu: S ..
More Effective C#: 50 ..
PHP, Apache Url Rewrit ..
Javascript'de nesne li ..
MySql veritabanı bağla ..
Jquery ile dinamik res ..
PHP ve Jquery ile Goog ..
Jquery ve PHP ile Ajax ..
XAMPP ile PEAR MDB2 Pa ..
Bir Tasarım Şablonu: S ..
More Effective C#: 50 ..
PHP, Apache Url Rewrit ..
Etiketler
| Araç | Asp.net | Büyük-boyut | Command-prompt | Efekt | Gimp | Http-headers | İsim-değişikliği | Java | Java-se | Mdb | Netbeans | Pear-paketi-kur | Php | Pixel-renk | Seo | Seo-optimizasyon | Smudge | Tablo | Tablo-değişikliği | Veritabanı | Xampp | Yağlı-boya | Yaymak | Yönlendirme | Zaman |arama
Loading
sosyal




