![]() |
![]() ![]() ![]() |
![]() |
#1 |
![]() |
Php ve htaccess ile URL Rewriting (seo yapımı)
Merhaba arkadaşlar burada sizlere htaccess yardımıyla bir web sitesine nasıl seo daha doğrusu URL Rewriting yaparsınız bunu anlatmaya çalışıcam.
Öncelikle isterseniz seo'nun ne olduğunu buradaki seo nedir adlı makalemden bulabilirsinz. Burada size bahsetmem gereken sanırım URL Rewriting'in ne olduğu. URL Rewriting'in Türkçesi url yi yeniden yazmadır. Örnek vericek olursak Bu bizim url'miz http://www.site.com/sayfa.php?g=posts&t=5705 bunun "sayfa.php?g=posts&t=5705" kısmını arama motorlarının seveceği kullanıcıların ise içerik hakkında bilgi edinip daha kolay girebileceği bir hale getirmektir. URL Rewriting'in basit mantıkla anlamı budur şimdi ise size bir php sayfanın url'sini htaccess kullanarak nasıl düzenleyebilirsiniz bunu anlatmaya çalışıcam. "Neden Php ?" asp, .net veya diğer dillerde urlmize seo uygulayamazmıyız. Tabii ki uygularız ama hepsinin ayrı ayrı yöntemleri var htaccess linuxda yanlızca linuxda (daha doğrusu apache'de) çalışan bir fonksiyondur ve sadece php de kullanabilinir. Asp de bu işlem için hata sayfaları, .net de ise ayrı url rewriterlar kullanılır. Konuyu dağıtmadan asıl konumuza örneklerle geri dönelim şimdi ilk örneğimiz basit bir şarkı sözü sitesi olsun (revaçta olduğundan seçtim) Sistemimize seo uygulamadan önceki urlmiz farzedelimki "sarki.php?id=12" Olsun. Buradaki url'nin görevi veri tabanından id'si 12 olan şarkıyı veritabanından çekip ziyaretçiye sunmaktır. Biz htaccess yardımıyla bunu biraz daha güzelleştirelim ve url'de sarki.php?id=12 yerine Şarkıcının adı ve şarkı adını yan yana yazdıralım. Yani url'mizi Cem-Adrian-Yagmur-s12.html şeklinde yapalım. Burada aralara - koymamızın sebebi eper boşluk bırakırsak Bunu browserın otomatik %20 yapıcak olmasıdır yani eğer url'mizi Cem Adrian Yagmur s12.html şeklinde yaparsak. Broserimiz ve arama motorları genelde bunu Cem%20Adrian%20Yagmur%20s12.html şeklinde algılayacaklardır buda gördüğünüz gibi pek hoş olmuyor. En son kısıma koyduğumuz s12 ibaresi ise htaccess'in sarki.php ye hangi veriyi çekmesi gerektiğini belirtmek için yani bi bakıma php veya htaccessi s12'ye kadar olan kısım ilgilendirmiyor onu ilgilendiren s12 kısmı çünkü bu sayede veritabanından hangi veriyi yazması gerektiğini anlıyor neyse Bunun için kullanmamız gereken htaccess kodu. Kod:
Options +FollowSymLinks RewriteEngine on #rewritebase / RewriteRule ^(.*)-s(.*).html$ sarki.php?sarki=$2&gereksiz=$1[L,NC] Bana gelen urllerde baş kısımda ne yazarsa yazsın beni ilgilendirmiyor. Beni ilgilendiren asıl kısım s harfinden sonra gelen değer. Benim yapmam gereken s harfinden sonra gelen değeri "sarki.php?id=" bu url'nin arkasına koyup çalıştırmak. Biz yukarıdaki kodu yazdığımızda htaccess yukarıda bahsettiğim gibi algılıyor ve s harfinden sonra gelen değeri sanki sarki.php?id= sayfasına yazılmış gibi çalıştırıyor. Biz nasıl manuel olarak url ye sarki.php?id=12 yazıp girdiğimizde Cem Adrian Yağmur şarkısı çıkıyorsa Yani url'mizi Cem-Adrian-Yagmur-s12.html yazdığımızda da aynı sayfa açılıcak hatta deminde bahsettiğim gibi htaccess için s harfinden önce yazılanların hiç bir önemi yok. Örneğin biz ahmet-kocaman-yaylalar-s12.html yapsakta bize Cem Adrianın Yağmur şarkısını verir bunun nedeni s harfinden sonra gelen id nin 12 olması ve veritabanındaki 12 id li şarkının Cem Adrianın Yağmur şarkısı olması. Sistemin temel olarak çalışma prensibi bu birdahaki url rewrite makalemde redLine olarak daha gelişmiş portallarda bu işlemi yapmayı anlatıcam. Şimdi size işinize yarayacağını düşündüğüm bir php fonksiyon vereyim Kod:
function seo($url){ $url = trim($url); $url = strtolower($url); $find = array('', ''); $url = str_replace ($find, '', $url); $url = preg_replace('/<(\/{0,1})img(.*?)(\/{0,1})\>/', 'image', $url); $find = array(' ', '"', '&', '&', '\r\n', '\n', '/', '\\', '+', '<', '>'); $url = str_replace ($find, '-', $url); $find = array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ë', 'Ê'); $url = str_replace ($find, 'e', $url); $find = array('í', 'ı', 'ì', 'î', 'ï', 'I', 'İ', 'Í', 'Ì', 'Î', 'Ï'); $url = str_replace ($find, 'i', $url); $find = array('ó', 'ö', 'Ö', 'ò', 'ô', 'Ó', 'Ò', 'Ô'); $url = str_replace ($find, 'o', $url); $find = array('á', 'ä', 'â', 'à', 'â', 'Ä', 'Â', 'Á', 'À', 'Â'); $url = str_replace ($find, 'a', $url); $find = array('ú', 'ü', 'Ü', 'ù', 'û', 'Ú', 'Ù', 'Û'); $url = str_replace ($find, 'u', $url); $find = array('ç', 'Ç'); $url = str_replace ($find, 'c', $url); $find = array('ş', 'Ş'); $url = str_replace ($find, 's', $url); $find = array('ğ', 'Ğ'); $url = str_replace ($find, 'g', $url); $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/'); $repl = array('', '-', ''); $url = preg_replace ($find, $repl, $url); $url = str_replace ('--', '-', $url); return $url; } Kodun amacı url'lerdeki Türkçe karakterleri boşlukları düzenleyip aralara - koyuyor yani urlyi tam anlamıyla bizim istediğimiz hale getiriyor. Kullanımı zaten basit örneğin <a href="'.seo($sarkibol[baslik]).'-s'.seo($sarkibol[id]).'.html" class="link1">'.$sarkibol[baslik].'</a> Bu kod veritabanımızdan htaccessle istediğimiz gibi urlyi çekip fonksiyonla düzgün hale getiriyor |
![]() |
Alıntı |
![]() |
|||||
Baslik | Kategori | Son Yazan | Cevaplar | Okunma | Son Mesaj |
![]() |
Teknoloji Haberleri | fableturk | 0 | 649 | 31-10-2009 18:23 |
![]() |
Teknoloji Haberleri | fableturk | 0 | 700 | 31-10-2009 18:22 |
![]() |
Teknoloji Haberleri | fableturk | 0 | 906 | 31-10-2009 18:20 |
![]() |
Teknoloji Haberleri | fableturk | 0 | 834 | 31-10-2009 18:18 |
![]() |
Son Dakika Haberler | fableturk | 0 | 904 | 31-10-2009 18:16 |
Etiketler |
htaccess, ile, php, rewriting, seo, url, yapımı |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
|
|