Php

Sef Link İçin Örnek Olarak Hazırlanmış .htaccess Kodları (Dosyası)

  Php    10 Mart 2013
19 Yorum

Merhaba yazılım severler,

Bu yazımda örnek olarak hazırlanmış bir .htaccess kodlarını sizlerle paylaşmak istiyorum,

.htaccess önemi neden bu kadar büyük ; sef link yapımında en büyük yardımcılarımızdan birisi çünkü,

Öncelikle linklerinizi TR karakterlerden ve diğer boşluk vs verilerden ayırt etmek için şu kodu kullanınız

/**
* @param $string
* @return mixed
*/
function permalink($string)
{
$find = array('Ç', 'Ş', 'Ğ', 'Ü', 'İ', 'Ö', 'ç', 'ş', 'ğ', 'ü', 'ö', 'ı', '+', '#');
$replace = array('c', 's', 'g', 'u', 'i', 'o', 'c', 's', 'g', 'u', 'o', 'i', 'plus', 'sharp');
$string = strtolower(str_replace($find, $replace, $string));
$string = preg_replace("@[^A-Za-z0-9\-_\.\+]@i", ' ', $string);
$string = trim(preg_replace('/\s+/', ' ', $string));
$string = str_replace(' ', '-', $string);
return $string;
}

// Kullanımı
$deger = "Bu Türkçe Bir Yazıdır";
echo permalink($deger);

Örnek Kodlar:

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^index_([0-9]+).html$ ./index.php?sayfa=$1 [L]
RewriteRule ^index.html.* index.php [NC]
RewriteRule ^sifremiunuttum.html.* sifremiunuttum.php [NC]
RewriteRule ^uyari.html.* uyari.php [NC]
RewriteRule ^profil/(.*)$ profil.php$1 [NC]
RewriteRule ^haberler/(.*)$ haberler.php$1 [NC]
RewriteRule ^urunler/(.*)$ urunler.php$1 [NC]
RewriteRule ^hizmetler/(.*)$ hizmetler.php$1 [NC]
RewriteRule ^referanslar/(.*)$ referanslar.php$1 [NC]
RewriteRule ^galeri/(.*)$ galeri.php$1 [NC]
RewriteRule ^yoneticiler/(.*)$ yoneticiler.php$1 [NC]
RewriteRule ^insan-kaynaklari/(.*)$ insan-kaynaklari.php$1 [NC]
RewriteRule ^iletisim/(.*)$ iletisim.php$1 [NC]
RewriteRule ^yeniuyelik/(.*)$ uyeol.php$1 [NC]
RewriteRule ^kategoriler.html.* kategoriler.php [NC]
RewriteRule ^haber/(.*)/(.*).html haberdetay.php?Id=$1 [NC,L]
RewriteRule ^urun/(.*)/(.*).html urun.php?Id=$1 [NC,QSA,L]
RewriteRule ^etiket/(.*)/(.*).html urun.php?Id=$1 [NC,QSA,L]
RewriteRule ^sayfa/(.*)/(.*).html sayfa.php?Id=$1 [NC,L]
RewriteRule ^kategori/(.*)/(.*)_([0-9]+).html kategori.php?Id=$1&sayfa=$3 [L,NC]
RewriteRule ^haber-kategori/(.*)/(.*).html h-kategori.php?Id=$1 [L]
RewriteRule ^kategori/(.*)/(.*).html kategori.php?Id=$1 [L]
RewriteRule ^g-kategori-(.*)-(.*)_([0-9]+).html g-kategori.php?Id=$2&sayfa=$3 [L,NC]
RewriteRule ^galeri-kategori/(.*)/(.*).html g-kategori.php?Id=$1 [L]
RewriteRule ^haberler_([0-9]+).html$ ./haberler.php?sayfa=$1 [L]
RewriteRule ^urunler_([0-9]+).html$ ./urunler.php?sayfa=$1 [L]
RewriteRule ^hizmetler_([0-9]+).html$ ./hizmetler.php?sayfa=$1 [L]
RewriteRule ^referanslar_([0-9]+).html$ ./referanslar.php?sayfa=$1 [L]
RewriteRule ^galeri_([0-9]+).html$ ./galeri.php?sayfa=$1 [L]
ErrorDocument 404 /404.html
RewriteRule ^404.html.* 404.php [NC]
RewriteRule ^sitemap.xml$ sitemap.php

 

Burda görüldüğü gibi,

öncelikle “RewriteEngine On” özelliği açık oluyor, yani adres çubuğuna yazılan link tekrar yazılıyor, nasıl;

 

RewriteRule ^index.html.* index.php [NC]

Yukarıda yazılı olan index.html adres çubuğuna yazıldığında böyle bir sayfa yok aslında ama sunucu bu kod ile index.php sayfasını çağırıyor.

Başka bir satırı inceleyelim;

RewriteRule ^hizmetler/(.*)$ hizmetler.php$1 [NC]

Burdada aynı mantık söz konusu, adres çubuğuna örneğin ” www.sanalicerik.com/hizmetler/ ” yazıldığında sunucu bize hizmetler.php sayfasını çağıracaktır.

RewriteRule ^urunler_([0-9]+).html$ ./urunler.php?sayfa=$1 [L]

Burdaki linkte ise bir ürün girilmiştir ve link şu şekildedir;

www.sanalicerik.com/urunler/5/deneme-urunu.html

sunucuda burda kullanacğı kısım ilk “/” dan sonraki urunler, burdan hangi sayfayı çağıracağını anlayacak,

ikinci “/” dan sonra rakam geliyor, burdandan veri tabanında o ürüne ait id numarasını alıp istenilen ürünün istemciye sunacak.

son kısımda SEO için arama motorlarında  deneme ürünün diye aranıldığında rahatlıkla üst sıralara çıkabilmeniz için.

Umarım faydalı bir yazı olmuştur, herkese kolay gelsin…

151 okunma

Etiketler : , , ,

  Benzer Yazılar


  Yorumlar

Bir Cevap Yazın

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

Yapına Yorumlar (19)

  • Cerv Yazar

    Hocam öncelikle bu konuyu ele alıp açıklama getirdiğiniz için teşekkürü bir borç bilirim.

    Bu .htaccess dosyasını php mysql siteye nasıl entegre ederiz? Sadece htacess dosyası ile mi SEF Link olayını gerçekleştirmiş olacağız? datebase’imizde bunun için bir tablo oluşturup verileri çekmemiz gerekmiyor mu? Gerekiyorsa boş bir vaktinizde bunun için de ayrı bir anlatım metni oluşturabilir misiniz? bu konuyu da sizden öğrenmek, eksiksiz öğrenmemizi sağlayacağından dikkatle takip edeceğim.

    Saygılar.

    • admin Yazar

      Bunu mysql dosyasına entegreye gerek yok. Siz bu .htaccess dosyasını ftp ana dizine attığınızda linklerinizi dosyada nasıl belirttiyseniz o şekilde çalışır zaten. Örneğin linkte iletisim.html yazıyordur. .htacces dosyasında .html i .php ye çevir dediğinizde sunucu direk olarak iletisim.php dosyasını çalıştıracaktır. Adres çubuğunda yine iletisim.html yazacaktır. Saygılarımla.

  • murat Yazar

    Selam aleykum hocam kolay gelsın…

    benım yapmış oldugum .htaccess’de

    uzantı veriyorum normal bir şelilde
    http://www.sanalicerik.com/iletisim/ çalışıyor
    Lakın

    http://www.sanalicerik.com/urunler/5/deneme-urunu.html
    Sayfa boş çıkıyor

    kod bu :
    #Options +FollowSymlinks
    RewriteEngine on

    RewriteRule ^index_([0-9]+).html$ ./index.php?sayfa=$1 [L]
    RewriteRule ^index.html.* index.php [NC]
    RewriteRule ^anasayfa/(.*)$ index.php$1 [NC]
    RewriteRule ^urunler_([0-9]+).html$ ./urunler.php?sayfa=$1 [L]
    RewriteRule ^urunler/(.*)$ urunler.php$1 [NC]
    RewriteRule ^kategori/(.*)/(.*)/ kategori.php?Id=$2 [L]
    RewriteRule ^galeri/(.*)$ galeri.php$1 [NC]
    RewriteRule ^haberler/(.*)$ haberler.php$1 [NC]
    RewriteRule ^hizmetler/(.*)$ hizmetler.php$1 [NC]
    RewriteRule ^yoneticiler/(.*)$ yoneticiler.php$1 [NC]
    RewriteRule ^insan-kaynaklari/(.*)$ insan-kaynaklari.php$1 [NC]
    RewriteRule ^referanslar/(.*)$ referanslar.php$1 [NC]
    RewriteRule ^iletisim/(.*)$ iletisim.php$1 [NC]

    RewriteRule ^urun/(.*)/(.*)/ urun.php?Id=$2 [NC,QSA,L]
    RewriteRule ^haberler_([0-9]+).html$ haberler.php?sayfa=$1 [L]
    RewriteRule ^haber/(.*)/(.*)/ haberdetay.php?Id=$2 [NC,L]
    RewriteRule ^kategori-(.*)-(.*)_([0-9]+).html kategori.php?Id=$2&sayfa=$3 [L,NC]
    RewriteRule ^referanslar_([0-9]+).html$ referanslar.php?sayfa=$1 [L]
    RewriteRule ^galeri-kategori-(.*)-(.*).html g-kategori.php?Id=$2 [L]
    RewriteRule ^galerikategori-(.*)-(.*)_([0-9]+).html g-kategori.php?Id=$2&sayfa=$3 [L,NC]
    RewriteRule ^galeri_([0-9]+).html$ galeri.php?sayfa=$1 [L]

    RewriteRule ^s/(.*)-(.*)/ sayfa.php?Id=$2 [NC,QSA,L]
    RewriteRule ^sk/(.*)-(.*)/ sayfakategori.php?Id=$2 [NC,QSA,L]

    RewriteRule ^(.*)/([0-9]+)/ kategori.php?Id=$1&sayfa=$2 [L,NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/ kategori.php?Id=$1

    ErrorDocument 404 /404.html
    RewriteRule ^404.html.* 404.php [NC]
    RewriteRule ^sitemap_(.*).xml$ sitemap.php?page=$1 [L,NC]
    RewriteRule ^rss.xml.* rss.php [NC]

    mod_gzip_on Yes
    mod_gzip_dechunk Yes
    mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
    mod_gzip_item_include handler ^cgi-script$
    mod_gzip_item_include mime ^text/.*
    mod_gzip_item_include mime ^application/x-javascript.*
    mod_gzip_item_exclude mime ^image/.*
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*

  • abdullah Yazar

    İyi günler,
    Öncelikle bilgiler için teşekkür ederim.
    Benim sorunum şu:
    http://www.siteadi.com/haberler.php?id=36&isim=roma
    böyle bir adresi
    http://www.siteadi.com/haberler/roma gibi bir görünüme çevirmek için nasıl bir şey yazmam lazım.
    Yardımcı olursanız sevinirim.

    • admin Yazar

      Öncelikle ilgi ve yorum için teşekkürler, tabiki şöyle olacak kodumuz;

      http://www.siteadi.com/haberler.php?id=36&isim=roma
      linkiniz bu
      .htaccess kodu
      RewriteRule ^haberler/(.*).html haberdetay.php?Id=$36&isim=roma [NC,L]

      Bu şekilde deneyebilirmisiniz bi ?
      Burada yaptığımız işlem 36 id numaralı haberi dediğiniz şekilde yazma. Deneyin çalışmazsa site linkini verin bende bakayım.

  • abdullah Yazar

    Dediğiniz gibi olmadı
    Linki veriyorum
    https://./yurtdisi/yurtdisi_turlar.php?ad=36&isim=roma

    Benim İstediğim
    https://./yurtdisi/yurtdisi_turlar/roma

    böyle birşey yapabilir miyim

  • abdullah Yazar

    mail gönderdim hocam
    ilgilenirseniz sevinirim.

  • abdullah Yazar

    Hocam Çok teşekkür ederim yardımlarınız için.
    Sayenizde sorunu çözdüm süpersiniz

  • mesut Yazar

    Merhaba hocam ,

    linkim http://gozdeaksesuar.com/?/=35&Gözde-Home böyle ancak ben /?/=35 kısmınında görünmesini istemiyorum .htaccess dosyasında nasıl bir işlem uygulamam gerekir ?

    • admin Yazar

      Merhaba, önce ilgi için teşekkürler. 35 kısmının görünmesini istemiyorsanız yapacağınız işlem ,35 yerine veritabanında numerik değil harf olarak bir birincil anahtar atamanız gerekli. Yani 35 dediğiniz veritabanında o bilgiyi çektiği sütun. bunu yerine bilgiyi kaydederken id kısmına yine 35 yazsın birde id2 diye sütun açın ve bunuda gozde-home diye yazdırın. linki yazarkende id değil id2 yi çekin olacaktır. Yapamazsanız eğer info@sanalicerik.com mail adresine mail atın cep numaranızıda yazın halledelim

  • mete Yazar

    merhaba hocam. Benim problemim şu: normalde http://www….biz/isim.html şeklinde olan linklerimi htcess den http://www…..biz/kategoriadı/isim.html şekline çevirdim ve bu gün farkettimki bunca zamandır index alan bütün sayfalar 404 vermiş. Benim yapmak istediğim http://www….biz/isim.html bu linkleri http://www….biz/kategoriadı/isim.html bu şekil olan doğru linklere toplu olarak yönlendirmek. Bir kaç tane tek tek yaptım ama müthiş uğraştırıyor. sabahın bu saatine kadar araştırdım doğru düzgün birşey bilen yok. Yardımınızı bekliyorum.

  • Merhaba benim panel htaccess problemim var ve bi türlü çözemedim siteadi.com/panel yapıyorum kullanıcı adı ve şifre yazıyorum onaylandı diyor index.php den anasayfa.php ye atması gerekiyor fakat tekrar index.php ye düşüp kullanıcı adı şifre istiyor rica etsem yardımcı olabilirmisiniz.

    • admin Yazar

      siteadi.com/panel yaptıktan sonra yönlendirilen sayfaya bakmanız lazım. anasayfa.php ye yönlendirdiğine dair kod varmı ?
      Birde varsa mevcut htaccess kodlarını yazarsan bakayım.

  ARA