Anasayfa » Php

Htaccess Url Yönlendirme ve Kullanımı (Permalink) – Örnek Uygulama

21 Eylül 2012 6.033 kez okundu 12 yorum
1 Star2 Stars3 Stars4 Stars5 Stars (Henüz hiç oy kullanılmadı. İlk oyu siz verin.)
Loading ... Loading ...

Merhaba arkadaşlar, bu yazımda elimde var olan bir htaccess url yönlendirme örneğini paylaşacağım. Eğer konu hakkında fikriniz yok ise aşağıdaki yazıları okumanızı tavsiye ederim.

  1. Htaccess Url Yönlendirme ve Kullanımı
  2. Htaccess Url Yönlendirme ve Kullanımı – 2

Örnek uygulama 2 adet php dosyası ve 1 adet .htaccess dosyasından oluşmaktadır.

index.php dosyamız

<?php
echo "index</br>";
 
echo "<a href='http://localhost/ea3/a/b/c/'>Perma Link 3 Değişkenli</a></br>";
echo "<a href='http://localhost/ea3/a/b/'>Perma Link 2 Değişkenli</a></br>";
echo "<a href='http://localhost/ea3/a/'>Perma Link 1 Değişkenli</a></br>";
echo "<a href='http://localhost/ea3/a/b/c.html'>Perma Link .html ile</a></br>";
 
$baslik = "oyun-basligi";
echo "<a href='http://localhost/ea3/a/b/".$baslik.".html'>Değişken ile</a></br>";
 
echo "<a href='http://localhost/ea3/ayrinti.php?adres=a&islem=b&secici=".$baslik.".html'>Eski usül</a></br>";
 
echo "<a href='http://localhost/ea3/Oyunlar/b/c/'>Sadece Oyunlar için (html siz)</a></br>";
echo "<a href='http://localhost/ea3/Bilgilendirme/b/c.html'>Sadece Bilgilendirme için(html li)</a></br>";
?>

ayrinti.php dosyamiz

<?php 
echo "ayrinti.php</br>";
 
if(isset($_GET['tur']))
{
	echo "tur: ".$_GET['tur']."(Buradan hangi veritabanını seçeceğini kararlaştırabilirsin)</br>";
}
if(isset($_GET['adres']))
{
	echo "adres: ".$_GET['adres']."</br>";
}
if(isset($_GET['islem']))
{
	echo "islem: ".$_GET['islem']."</br>";
}
if(isset($_GET['secici']))
{
	echo "secici: ".$_GET['secici']."</br>";
}
?>

.htaccess dosyamız

Options +FollowSymLinks
RewriteEngine on 
 
RewriteRule ^Oyunlar/(.*)/(.*)/$ ayrinti.php?adres=$1&islem=$2&tur=oyunlar [L,NC] //oyunlara has değişkenli için
RewriteRule ^Bilgilendirme/(.*)/(.*).html$ ayrinti.php?adres=$1&islem=$2&tur=bilgilendirme [L,NC] //bilgilendirmeye has değişkenli için
RewriteRule ^(.*)/(.*)/(.*)/$ ayrinti.php?adres=$1&islem=$2&secici=$3 [L,NC] //3 değişkenli için
RewriteRule ^(.*)/(.*)/$ ayrinti.php?adres=$1&islem=$2 [L,NC]	//2 değişkenli için
RewriteRule ^(.*)/$ ayrinti.php?adres=$1 [L,NC]					//1 değişkenli için
RewriteRule ^(.*)/(.*)/(.*).html$ ayrinti.php?adres=$1&islem=$2&secici=$3 [L,NC] //sonunda .html olan 3 değişkenli için değişkenli için
Projenin kaynak kodlarını buradan indirebilirsiniz. Rar şifresi: www.kodmerkezi.net

<<< Önceki:

Sonraki: >>>


Facebookta Paylaş

12 yorum »

  • Anonim dedi ki:

    Localde çalıştığımda .htaccess kodlarınız 500 interval server error almama neden oluyor. bunun sebebi ne olabilir?

  • admin dedi ki:

    Merhaba,
    local de htaccess kullanabilmek için şu ayarları yapmış olmanız gerekmektedir.

    apache/conf/httpd.conf dosyasını açıp
    #LoadModule rewrite_module modules/mod_rewrite.so
    satırını bulup başında ki # işaretini kaldırın. Ardından aynı dosya içersinde
    “allowoverride none” yazan yerleri “allowoverride all” olarak değiştirin.
    Otomatik replace özelliği olan bi editörle yapmanızı tavsiye ederim çok sayıda var.

    Son olarak apache kapatıp tekrar açın. Yine çalışmaz ise bilgisayara reset atın.

  • Anonim dedi ki:

    teşekkür ederim sorun çözüldü gerçekten güzel örnekler vermişsiniz her ayrıntıyı düşünmüşsünüz

  • naci dedi ki:

    Verdiğiniz kod Gerçekten çok faydalı oldu.
    Fakat site.com/a/b/c/ çalışıyor.
    ama site.com/a/b/c çalışmıyor.
    bu sorunu nasıl çözebiliriz.

    iyi çalışmalar

  • admin dedi ki:

    Naci,
    Söylediğin durumu karşılayan (slahs ile bitmeyen 3 değişkenli url) bir expression olmadığı için çalışmaz. .htaccess dosyasına ilgili konuma şöyle bir satır daha eklemelisin.
    RewriteRule ^(.*)/(.*)/(.*)$ ayrinti.php?adres=$1&islem=$2&secici=$3 [L,NC] //3 değişkenli için slashsız

  • User dedi ki:

    Dostum çok teşekkür ederim. Süper bilgi paylaşmışsın. Çok işime yaradı…

  • dursun dedi ki:

    Çok güzel bir paylaşım olmuş, Ellerinize sağlık.

    Şöyle bir sorum olacak;

    RewriteRule ^seflink-(.*)-(.*)-(.*)-$ ayrinti.php?adres=$1&islem=$2&secici=$3&sef=seflinkkler [L,NC] //3 deðiþkenli için

    kısmı değiştirdim görüldüğü gibi. Linki de şöyle değiştirdim.

    echo "Perma Link 3 Deðiþkenli";

    $__GET [“sef”] ile yaklaıyorum.
    Aslında problem yok çalışıyor. Yalnız link’teki a-b-c değerleri değişken içriği olduğu için(örenğin a yerine “kodmerkezi” yazarsak ekrana “kodmerkezi”geliyor)değiştirebiliyoruz. Ama “seflink” yerine farklı bir kelime yazkıdğımızda olay raydan çıkıyor. Bunun sebebi nedir?

    İkinci soru bu seflink içerisine direkt olarak htaccess icerisinden atama yapmak yerine diğer değişkenler gibi özgür kılabilirmiyiz

  • admin dedi ki:

    Dursun,

    Tabiki seflink’i de değişkene bağlayabilirsin, bunun için aynen diğerleri gibi seflink yazmak yerine (.*) kullanabilirsin.

  • Ercan dedi ki:

    Merhaba,

    öncelikle yazı için teşekkürler,istedigim gibi hersey tam takır,ancak .html ile biten uzantıları nasıl ayarlıyoruz.veya localhost/ea3/a/b/c şeklinde değilde localhost/ea3/a-b-c şeklinde nasıl ayarlama yapabiliriz.

  • admin dedi ki:

    Ercan,

    .html ile biten uzantılar için
    RewriteRule ^(.*)/(.*)/(.*).html$ ayrinti.php?adres=$1&islem=$2&secici=$3 [L,NC] //sonunda .html olan 3 değişkenli için değişkenli için

    ve diğer sorunuz için
    RewriteRule ^(.*)/(.*)-(.*)/$ ayrinti.php?adres=$1&islem=$2&secici=$3 [L,NC] //3 değişkenli için

    gibi kullanabilirsiniz.

  • mt2 pvp dedi ki:

    Tşkler Fakat Ben Sadece Sitemdeki Link’lere Tıkladıklarında O siteye Degilde Benim Istedigim Siteye Yönlendirme Yapmak Istiyorum?

  • alpay dedi ki:

    Benim şöyle bir sorunum var. GET ile tek deger aldığımda bir sorun yok ama 2 deger almaya çalıştığımda hata alıyorum kodlar aşağıdaki gibi.

    //htaccess dosyası
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)/([^/]+).html$ index.php?cat=$1&page_name=$2 [L]

    //index.php dosyası
    $kategori = “hizmetler”;
    $sayfa_adi = “seo”;

    echo ““.”Yönlendir”.”“;

    if($_GET[‘cat’] == “hizmetler” & $_GET[‘page_name’] == “seo”){
    echo “Lorem ipsum dolor sit amet…”;
    }

    Bu şekilde yaptığımda aynı sayfada başka linkler varsa tıkladığında önüne hizmetler koyuyor, kaç kere tıklarsan her defasında önüne ekliyor. Bu link herhangibir klasöre yönlendirmiyecek aynı sayfada index.php sayfasında GET ile alınan değere göre içerik gösterilecek. Bunu nasıl yapabilirim?

Yorum Bırakın!

Yorum yaz, yada kendi sitende trackback (Geri besleme) olarak ekle. Ayrıca RSS ile bu konuya üye olabilirsin. .

Nazik olun. Temiz tutun. Konu dışına çıkmayın. Spam yaratmayın.

Bu tagları kullanabilirsiniz:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Bloğumuz gavatarı desteklemektedir. Kendi gavatarınızı edinmek için lütfen Gravatar a üye olun.