Hoşgeldiniz!

Kayıt olarak, topluluğumuzun diğer üyeleri ile görüşebilir, paylaşabilir ve özel mesaj gönderebileceksiniz.

Şimdi Kayıt Ol!

.htaccess ile seo dostu url yapısı

snow

Administrator
Yönetici
Katılım
11 Ağu 2019
Mesajlar
11
Beğeniler
8
#1
Aşağıdaki kuralları uygulamadan önce aşağdaki 3 satırı dosyanıza eklemelisiniz.

Kod:
Options -Indexes +FollowSymlinks
RewriteEngine on
RewriteBase /
sitenizdeki tüm adresiler siteadi.com adresinden www.siteadi.com adresine yönlendirmek için aşağıdaki kodu kullanmalısınız.

Kod:
RewriteCond %{HTTP_HOST} !^www\.siteadi\.com
RewriteRule (.*) http://www.siteadi.com/$1 [R=301,L]
eğer ssl sertifikanız var ise www önlendirmesini aşağıdaki gibi yapmalısınız.

Kod:
RewriteCond %{HTTP_HOST} !^www\.siteadi\.com
RewriteRule (.*) https://www.siteadi.com/$1 [R=301,L]
www yönlendirmesinden sonra site uzantılarını düzenlemelisiniz.

RewriteRule ile url yapısını kesin şartla değiştirebilirsiniz.

Kod:
RewriteRule ^login$ /login.php [L]
yukarıdaki kod siteadi.com/login adresini login.php sayfasına yönlendirir. ancak bu yönlendirme yalnızca sunucu tarafında gerekleşir. Kullanıcının tarayıcısında siteadi.com/login yazar.

daha karmaşık bir örnek olarak
Kod:
RewriteRule ^changelang/([a-zA-Z]{0,3})$ /user.php?method=lang&data=$1 [L]
bu kod siteadi.com/changelang/tr adresinin sunucu tarafında /user.php?method=lang&data=tr olarak işlenmesini sağlar.

RewriteCond ile eklediğiniz kurala şart ekleyebilirsiniz.

mesela istenilen dosyanın sunucuda bir dizini veya klasörü göstermediğine emin olmak istiyoruz.
bunun için kuralın başına aşağıdaki kodu eklemeliyiz.
Kod:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
!-f ifadese istek yolu(REQUEST_FILENAME) bir dosya değilse demektir.
!-d ifadese istek yolu(REQUEST_FILENAME) bir klasör değilse demektir.

-f dosyayı kontrol eder. -d ise klasörü kontrol eder. en başındaki !(ünlem) işareti ise değilse anlamı taşır.

tüm yönlendirmeleri index.php sayfasında karşılayan kural aşağıdaki gibidir.
Kod:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?)$ /index.php?data=$1 [QSA,L,NC]
bu kod ile gelen isteğin herhangi bir özel klasöre veya dosyaya(resim, video,css,js gibi dosyaları sitenize çağırmak için bu RewriteCond u eklemek zorundasınız) olmadığını kontrol eder. eğer bu şekilde bir dizin veya dosya yoksa tüm adresi index.php adresine yönlendirir.

QSA parametresi örneğin facebook sitesinden sizin sitenize yönlendirme gerçekleşirse facebook adrese otomatik olarak parametre ekler.
Yani siz arkadaşınıza http://siteadi.com şeklinde adres atarsanız. arkadaşınız bu linke tıkladığında gidecegi adres http://siteadi.com/?fbi=315351a3df453asf54(random :)) şeklinde olur. site 404,500 gibi bir hata vermeden bu sorunu geçmek için bu parametreye ihtiyacınız var. Ayrıca bu parametre sayesinde $_GET['fbi'] (facebook yönlendirmesinden gelen değer) değerini kaçırmamış olursunuz.


örneğin ziyaretçi http://siteadi.com/haberler/haber1 adresine erişmek istedi. sunucu bu isteği /index.php sayfasına yönlendirir. ve get methodundaki data dizisinin içine haberler/haber1 verisini ekler.
php ile bu veriye $_GET['data'] ile erişebilirsiniz.

genel olarak htaccess dosyamıza göz atacak olursak:

Kod:
<IfModule mod_rewrite.c>
    Options -Indexes +FollowSymlinks
    RewriteEngine on
    RewriteBase /

    RewriteCond %{HTTP_HOST} !^www\.siteadi\.com
    RewriteRule (.*) http://www.siteadi.com/$1 [R=301,L]
   
    RewriteRule ^changelang/([a-zA-Z]{0,3})$ /user.php?method=lang&data=$1 [L]
    RewriteRule ^logout$ /user.php?method=logout&data=$1 [L]
    RewriteRule ^login$ /login.php [L]
   
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*?)$ /index.php?data=$1 [QSA,L,NC]
</IfModule>
 
Üst Alt