Webmaster Forumu - WebForumlari.Net
WF Reklam Alanı
Go Back   Webmaster Forumu - WebForumlari.Net > Webmaster Arşivi > WF Arşiv

WF Arşiv Önem taşıyan, arşivlik konuların yer aldığı bölümdür.

Cevapla
 
LinkBack Seçenekler Arama Stil
  #1 (permalink)  
Alt 29-10-2009, 11:07
 
İstanbul Avrupa Şubesi
Yaş: 18
Mesajlar: 311
e-Ticaret: (0)
iTrader Feedback: (0%)
Tecrübe Puanı: 3
Rep Puanı: 15
Rep Derecesi : fableturk is on a distinguished road
Standart 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]
Burada bizim asıl işimize yarayan kod "RewriteRule ^(.*)-s(.*).html$ sarki.php?sarki=$2[L,NC]" kodu diğerleri htaccessle link yönlendirme işi yapıcağımız anlamına filan yarıyor. Yukarıdaki koddan htaccessin anladığı;
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('<b>', '</b>'); 
$url = str_replace ($find, '', $url); 
$url = preg_replace('/<(\/{0,1})img(.*?)(\/{0,1})\>/', 'image', $url); 

$find = array(' ', '&quot;', '&amp;', '&', '\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ı ile Cevapla
Sponsor Reklam

Cevapla

Etiketler
htaccess, ile, php, rewriting, seo, url, yapımı


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Paylaş
Seçenekler Arama
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Hizli Erisim


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 03:39.


Powered by vBulletin® Version 3.8.4
Telif hakkı ©2000 - 2012, Jelsoft Enterprises Ltd.
Webmaster Forumu

Yasal Uyarı : 5651 sayılı kanun'un 8. maddesine ve T.C.K'nın 125. maddesine göre paylaşımlardan paylaşımı yapan üyeler sorumludur. WebForumlari.Net hakkında yapılacak tüm hukuksal şikayetler webmaster@webforumlari.net adresi ile iletişime geçilmesi halinde, ilgili kanunlar ve yönetmelikler çerçevesinde en geç bir hafta içerisinde tarafımızca gereken işlemler yapılacaktır.
Hosting by PlusHost