× Daha fazlası İçin Aşağı Kaydır
☰ Kategoriler

PHP HTACCESS KULLANIMI ve HTACCESS İLE PHP SAYFALARI HTML GÖSTERMEK

Htaccess web alanında birçok faydalı yönlendirme işlerinin  yapılmasını sağlayan, Apache web sunucularında olan etkili ve çok amaçlı bir ayar dosyasıdır.

PHP projelerimizi htaccess kullanarak kullanıcı dostu URL’ler yapmamıza ve bir takım yollarla güvenlik önlemleri de almamıza yarayan ve bu alanda en favori olaylardan bir tanesidir.

#HTACCESS İÇİN AÇIKLAMA NOTLARI

RewriteEngine on : Yönlendirmeleri aktif eder

 ^ İşareti başlangıcı

 $ İşareti Bitişi

 [0-9] : 0 ile 9 arasındaki tüm sayılar olabilir.

 [A-Z] : Büyük harfli A’dan Z’ye tüm harfler olabilir.

 [a-z] : Küçük harfli A’dan Z’ye tüm harfler olabilir.

 [A-Za-z0-9] : Bir harf ya da rakam olabilir.

 (*) işareti herhangi bir şey anlamında olup sıfır karakter de olur der ve sınırsız karaktere kadar gider.

(+) ise yıldızdan farklı olarak en az 1 karakter olmasını şart koşar.

 (?) ise tek bir harf için joker karakter niyetine kullanılır.

Parantez içlerinde kullanılan NC, L , R ve QSA harflerinin anlamları:

L: Last

Bu tanımlanmadan önce ifade edilen kurallar bundan sonrakilere geçmemesini ve karışmamasını sağlar.

R: Redirect

Bu değer kullanılırsa browserda adres değişir, kullanılmazsa yönlendirme arkaplanda yapılır fakat kullanıcının girdiği URL aynı kalır.

NC: No Case

Büyük küçük harfe duyarsız davranır.

QSA: Query String Append

GET metodu ile yönlendirme yaptığımızda yönlendirilen yere sonuna eklenen  GET parametrelerini de dahil eder.

1-) PHP ile yapılan Sitemizde firma-hakkinda.php Sayfasına Link ile Metinsel Değişken göndererek oluşturulmuş Linkleri Düzenlemek için

| Hakkımızda | İletişim |

Şeklindeki Yazılara Link Verirken

Hakkımızda => İçin firma-hakkinda.php?sayfa=hakkimizda

İletişim => İçin firma-hakkinda.php?sayfa=iletisim

Şeklinde Link ile değişken gönderdiğimizi ve o değişkeni de firma-hakkinda.php sayfasında $_GET[“sayfa”] şeklinde çekip if else ile kontrol ederek bir sayfa içerisinde birden fazla sayfa içeriğini görüntülettiğimiz bir yapının ayrı ayrı html sayfalarmış gibi gösterilmesi için

Yani Hakkımızda sayfasına Tıklayınca Adres Çubuğunda Linki

firma-hakkinda.php?sayfa=hakkimizda  

yerine

bt-bilgisayar-hakkimizda.html

 ————–

İletişimin Linki

firma-hakkinda.php?sayfa=iletisim

yerine

bt-bilgisayar-iletisim.html şeklinde görünsün istiyorsak.

—————-

Öncelikle .htaccess isimli bir dosya oluşturacağız. Bilgisayarımız bu dosyayı oluşturmamıza izin vermeyeceğinden biz dosyayı htaccess.txt olarak oluşturup içine aşağıdaki kodları ekleyeceğiz. Sunucuya atınca da htaccess.txt yi .htaccessismine çevireceğiz

Htaccess içeriği

—————————————-

Options +FollowSymLinks

RewriteEngine On

RewriteRule ^bt-bilgisayar-(.*).html$ firma-hakkinda.php?sayfa=$1 [L,NC]

—————————————–

Şimdi kodu biraz açıklayalım

^bt-bilgisayar-(.*).html$ firma-hakkinda.php?sayfa=$1

Başlangıcı bt-bilgisayar- olacak ondan sonra bir değişken olacak yani firma-hakkinda.php?sayfa=iletisim kısmında sayfa değişkenine atayacağımız değeri burada iletisim şeklinde  tanımlamamız gerektiğini ve $ bitişi ifade ettiğinden dolayı da sayfanın .html ile biteceği anlatılıyor.

Htaccess dosyayısını bu şekilde tanımladıktan sonra sayfamızda verdiğimiz linkleri de değiştireceğiz. Yani

firma-hakkinda.php?sayfa=hakkimizda 

yerine

bt-bilgisayar-hakkimizda.html

 ————–

İletişimin Linkini

firma-hakkinda.php?sayfa=iletisim

yerine

bt-bilgisayar-iletisim.html olarak değiştireceğiz.

Bu Linke tıklayınca adres çubuğunda bt-bilgisayar-hakkimizda.html  gözükecek.

bt-bilgisayar-hakkimizda.html –  bt-bilgisayar-(.*).html tanımından oradaki (.*)  hakkimizda yı alacak ve sanki

firma-hakkinda.php?sayfa=$1 yerine hakkimizda yı koyacak

firma-hakkinda.php?sayfa=hakkimizda ymış gibi çalıştıracak.

SONUÇ: htaccess içinde gerekli tanımlamayı yap. Sonra da PHP sayfadaki linkleri buradaki kurala uygun hale getir. İşlem tamamdır.

2-) PHP ile yapılan Sitemizde urunlerimiz.php Sayfasına Link ile sayısal Değişken göndererek oluşturulmuş Linkleri Düzenlemek için

Adres Çubuğunda Linki

urunlerimiz.php?urun_id=1

yerine

8-urunlerimiz-buzdolabi.html       şeklinde göstermek için

Aynı şekilde htaccess dosyasını oluştur.

Htaccess dosya içeriği

——————————-

Options +FollowSymLinks

RewriteEngine On

RewriteRule ^([0-9]+)-urunlerimiz-(.*).html$ urunlerimiz.php?kategori_id=$1 [L,NC]

——————————

 id numarası sayısal olduğu için ([0-9]+)kullanıyoruz bu id yi $1 içine atıyor

Sonra da sayfada verdiğimiz urunlerimiz.php?urun_id=1

linkinini yerine

<?php echo $id;?>-urunlerimiz-<?php echo $kategori_adi;?>.html

yazıyoruz.

 Sondaki [L,NC] L ise eğer o satırdan sora eşleşme olursa bile çalıştırmaması içindir

 Sondaki [L,NC] NC ise sunucuda büyük küçük harf duyarlılığı varsa onu etkisiz hale getirir

 RewriteRule ^(.*).html$ $1.php [L,NC] Başta gördüğünü sondaki gibi çalıştır demektir.

# RewriteRule ^(.*)-uye-bak-(.*).html$ uyebak.php?id=$1&ad=$2 [L,NC] – Şeklinde bir satırda birden fazla değişken kullanılacak ise (.*) içindekini $1 e, sonraki (.*) $2, sonraki $3 şeklinde tanımlanır.

3- ) PHP Uzantılı bir sayfayı html göstermek Yani uye-ol.php sayfasına tıklanınca uye-ol.html gibi görünsün için de

Htaccess içeriği

—————————

Options +FollowSymLinks

RewriteEngine On

RewriteRule ^(.*).html$ $1.php [L,NC]

—————————

Olarak düzenleyip. Sonra da Linkini uye-ol.html ver işlem tamamdır.

4-) Birkaç özelliği içinde bulunduran htaccess dosya içeriği ve linklerinin son hali

Htaccess dosya içeriği

———————————

Options +FollowSymLinks

RewriteEngine On

RewriteRule ^([0-9]+)-urunlerimiz-(.*).html$ urunlerimiz.php?kategori_id=$1 [L,NC]

RewriteRule ^([0-9]+).urun-(.*).html$ urun-detay.php?urun_id=$1 [L,NC]

RewriteRule ^bt-bilgisayar-(.*).html$ firma-hakkinda.php?sayfa=$1 [L,NC]

RewriteRule ^(.*).html$ $1.php [L,NC]

———————————–

Bu sayfada urunlerimiz.php, urun-detay.php, firma-hakkinda.php ve php uzantılı sayfaları html yapacak ayar ve tanımlar yer almaktadır.

a-) firma-hakkinda.php sayfasını aç oradaki linkleri değiştir.

<a href=”bt-bilgisayar-hakkimizda.html” class=”ustmenu”>Hakkımızda</a>

b-) urunlerimiz.php sayfasını aç oradaki linkleri değiştir Ama bu urun-detay.php için yapılacak ayardır.

<a href=”<?php echo $urun_id;?>-urun-<?php echo $kategori_ismi;?>.html” class=”ortalink”>Detay İçin Tıkla</a>

c-) Solmenu sayfasını aç oradaki linkleri değiştir. Ama bu urunlerimiz.php için yapılacak ayardır.

<a href=”<?php echo $id;?>-urunlerimiz-<?php echo $kategori_ismi;?>.html” class=”solmenu”><?php echo $kategori_adi;?></a>

d-) Solmenu sayfasını aç oradaki uye-ol.php sayfasını uye-ol.html göstermek için de oradaki linki

<a href=”uye-ol.html” class=”solmenu”>Üye Ol</a>

—————————————————–

Proje Örnek Htaccess :

Options +FollowSymLinks

RewriteEngine On

#SSL ile https yönlendirmesi yani https://www.bilgiegitim.com htaccess dosya örneği

RewriteCond %{HTTPS} off

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

#Site adresi bilgiegitim.com yazılınca başına http://www. ekleyen htaccess dosya örneği

rewritecond %{http_host} ^bilgiegitim.com [nc]

rewriterule ^(.*)$ http://www.bilgiegitim.com/$1 [r=301,nc]

#Php Sayfa Uzantılarını Gizlemek İçin Kullanılan htaccess dosya örneği

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME}.php -f

RewriteRule ^(.*)$ $1.php

#404 hata sayfası yönlendirme htaccess  kodu

ErrorDocument 404 http://www.bilgiegitim.com

#Kategori adlarını göstermek İçin Kullanılan htaccess dosya örneği

RewriteRule ^kategoriler/(.*).html$ urunler.php?url=$1 [L,NC]

#Ürün adlarını göstermek İçin Kullanılan htaccess dosya örneği

RewriteRule ^urunler/([0-9]+)-(.*).html$ urun-detay.php?urun_id=$1 [L,NC]

# Birden Fazla Değişken gönderen htaccess örneği $1 Metinsel [0-9a-zA-Z-_], $2 sayısal [0-9] bir değerdir.

RewriteRule ^ders-notlari-([0-9a-zA-Z-_]+)-([0-9]+)$  ders-notlari.php?kurs_adi=$1&icerik_id=$2 [L,NC,QSA]

——————————————————————

index.php, hakkimizda.php, iletisim.php gibi sayfalara link verirken php uzantısı kullanmadan sadece index, hakkimizda Link detayı

<li> <a href=’index’>Anasayfa</a> </li>

<li> <a href=’hakkimizda’>Hakkımızda</a> </li>

<li> <a href=’iletsim’>İletişim</a> </li>

————————————

urunler.php için verilen link detayı

echo “<li> <a href=’kategoriler/$url.html’>$kat_adi</a> </li>”;

——————————————

urun-detay.php için verilen link detayı

<p> <a href=”urunler/<?php echo $urun_id.”-“.$urun_adi_duzelt;?>.html”><i class=”fa fa-search”></i></a> </p>

———————–

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir