Twitter ve Flickr Tarzı .htaccess Url Yönlendirme

Kısa ve düzenli url sistemleri arama motorlarında daha üst sıralarda çıkmanıza yardımcı olur. Popüler web servislerinden Flickr ve Twitter bu konuda iki iyi örnek. İkisinin de .htaccess URL mantıklarını çözmeye çalışalım.

Flickr.com

flickr.com

Url sisteminin bu şekilde çalışabilmesi için aşağıdaki 3 satır .htaccess kodu yeterlidir.

.htaccess içeriği

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ photos.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ photos.php?user=$1

Gördüğümüz gibi tek parametreli URL sistemi gayet basit bir şekilde uygulanabiliyor. Geçelim iki ve daha fazla parametreli URL sistemlerini incelemeye.

Flickr.com

Bu şekilde güncellemek istersek  .htaccess dosyasına aşağıdaki satırları ilave ediyoruz.

.htaccess içeriği

//Tek parametreli URL , bunu bi onceki ornekte yapmistik
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ photos.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ photos.php?user=$1

//Cift parametreli URL
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/page([0-9]+)$ photos.php?user=$1&page=$2
RewriteRule ^([a-zA-Z0-9_-]+)/page([0-9]+)/$ photos.php?user=$1&page=$2

Basit olarak Flickr.com URL sistemini açıklamaya çalıştım. Geçelim Twitter.com URL sistemine.

Twitter.com

Bilindiği gibi Twitter URL uzantısız ve tekildir. Hem sistem sayfaları hem de kullanıcıların profil sayfaları tek tip halinde yayınlanmaktadır. Peki bunun mantığı nedir?

Twitter.com url sistemi

Her ne kadar Twitter.com‘un altyapısı Ruby on Rails ile kodlanmış olsa da, twitter’ın sayfa sistemi .htaccess yardımıyla PHP kodlanarak da gerçekleşebilir.

Twitter sistemi için gereken .htaccess kodu aşağıdaki gibidir:


RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?sayfa=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?sayfa=$1

index.php kod yapısı da aşağıdaki gibi olmalıdır.

<?php

$key=$_GET&#91;'sayfa'&#93;;

if($key=='home')
{
include_once('home.php'); // Home sayfasi
}
else if($key=='login')
{
include_once('login.php'); // Login sayfasi
}
else if($key=='about')
{
include_once('about.php'); // About sayfasi
}
else
{ //sayfa parametresi ontanimli iceriklerden biri degilse kullanici olarak isleme aliniyor
include_once('users.php'); // User profil sayfasi
}
?>

veya bu kodlamayı switch-case yöntemiyle de kullanabiliriz:

switch($_GET['sayfa'])
{
case 'home': include_once('home.php');break;
case 'login': include_once('login.php');break;
case 'terms': include_once('about.php');break;
case 'users':include_once('users.php');breaak;
default: include_once('404.php'); //hata
}

11 thoughts on “Twitter ve Flickr Tarzı .htaccess Url Yönlendirme

  • Hocam çok güzel anlatmışsınız gerçekten htaccessi de öğrendik sayenizde fakat benim php kursum yeni bitte ve açıkcası sadece teori gördük site yapmadık.
    o yüzden sayfalama mantığını bilmiyordum.biraz kavradım sayılır.

    Peki en başta get ile veri alıyoruz peki bu veriyi gönderen ne yanı tamam üye girişi yapmamışsa login çıkıcak da bunu php ile mi kontrol ediyoruz javascript falan mı?

  • veriyi gönderen derken kastettiğin nedir mehmet? tam anlayamadım. üye girişi yapıp yapmaması , oturum bilgilerinin kontrollerine bakılır. bunun için de iki alternatifin vardır, sessions yada cookies(çerezler).
    javascriptle de cookies yönetimi yapılabilir ama tarayıcı üzerinde çalışabildiği için php olmadan veritabanı işlemleri yapılamaz. mutlaka php kullanman gerekir.

    umarım soruna cevap olmuştur.

  • Evet, kusura bakmayın acemi sayılırım hele cookie ve sessions olayını hiç görmedik onun için belki.

    sorum ise en son örnekteki switch e get ile gelen bilginin nereden geldiğiydi.Cahile laf anlatmak zordur bilirim 🙂 ama öğrenicez inşallah, sitenizde çok orjinal makaleler ve çeviriler var.

    Bu arada twitter makalelerinizi birleştirip bir microblog sitesi yapmayı düşünüyorum 😀

  • $_get[‘sayfa’] değişkeni url den sonra genel get parametresidir.

    “www.serpito.com/?sayfa=deneme” url sinde oldugu gibi aynı şekilde htaccess ile şekillenmiş url için de sayfa parametresi çalışır

  • Bu şekilde htaccess kullanığımız zaman

    index.php?page=products&categori=2&subcategory=6

    şeklinde olan bir yapıda get ile sayfa içerisine bu değişkenleri alamıyorum. Neden olabilir?

    $_GET[‘categori’]; ?
    $_GET[‘subcategory’]; ?

    say

  • bu yazı yazılalı bir yıldan fazla bir zaman olmuş fakat benim 3 yıldan fazla bir zamandır aradığım birşeydi. .htaccess konusunda neredeyse ustalaştım fakat şu url’yi yapamıyordum.
    site.com/yazilar/
    site.com/yazilar/page-2/
    ayrı ayrı parametreler tanımlıyordum. bu yazı için çok teşekkür ederim. hiç bir yerde bulamadığım bir bilgiydi.

  • Çok güzel olmuş elinize sağlık. Diğer sitelerde bulamadığım şeyi siz çok düzgün açıklamışsınız. Çok teşekkürler.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir