PHP PROGRAMLAMA KURSU : PHP HTACCESS İLE SEO UYUMLU LİNK OLUŞTURMA

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>
 
-----------------------
 
Telefon
Whatsapp