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.
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 :