Eğer bir Apache sunucusu üzerinde bir web sitesi çalıştırıyorsanız, .htaccess dosyası elinizdeki en güçlü araçlardan biridir. URL’lerinizin nasıl davrandığını kontrol etmenizi sağlar — yönlendirmelerden temiz URL yeniden yazımına — gerçek sunucu yapılandırmanızı değiştirmeye gerek kalmadan.

Bu yazıda, .htaccess kullanarak URL yönlendirmesi ve yeniden yazımı hakkında temel bilgileri, net örnekler ve açıklamalarla ele alacağız.

.htaccess Dosyası Nedir?

.htaccess, Hypertext Access anlamına gelir. Apache tabanlı web sunucularında kullanılan bir yapılandırma dosyasıdır ve sunucu davranışında dizin düzeyinde değişiklikler yapmanıza olanak tanır.

Şunları yapabilirsiniz:

  • Bir URL’den diğerine trafik yönlendirmek

  • Temiz URL’ler oluşturmak (örneğin, /about yerine /about.php)

  • Belirli sayfalara erişimi kısıtlamak

  • HTTPS’yi etkinleştirmek

  • Ve daha fazlası

URL’leri Yönlendirme

1. 301 Kalıcı Yönlendirme

Bir sayfa kalıcı olarak yeni bir URL’ye taşındığında bunu kullanın.

Redirect 301 /old-page.html https://yourdomain.com/new-page.html

2. 302 Geçici Yönlendirme

Yönlendirmenin geçici olduğu durumlarda bunu kullanın.

Redirect 302 /temp-page.html https://yourdomain.com/coming-soon.html

3. mod_rewrite ile Yönlendirme

Ayrıca RewriteRule kullanarak yönlendirme yapabilirsiniz:

RewriteEngine On
RewriteRule ^old-page$ https://yourdomain.com/new-page [R=301,L]

URL’leri Yeniden Yazma (Temiz URL’ler)

URL yeniden yazma, URL’leri daha kullanıcı ve SEO dostu hale getirmek için kullanılır. Örneğin, bunun yerine:

https://example.com/product.php?id=123

Şunu kullanabilirsiniz:

https://example.com/product/123

1. Temel Yeniden Yazma Kuralı

RewriteEngine On
RewriteRule ^product/([0-9]+)$ product.php?id=$1 [L]

Bu, Apache’ye şunu söyler:

  • Birisi /product/123’e eriştiğinde

  • Bunu içsel olarak product.php?id=123 olarak yeniden yaz

2. .php Uzantısını Kaldır

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+)$ $1.php [L]

Bu, kullanıcıların example.com/about yerine example.com/about.php’ye erişmesini sağlar.

En İyi Uygulamalar

  • Değişiklik yapmadan önce her zaman .htaccess dosyanızı yedekleyin.

  • Bir eşleşme bulunduğunda daha fazla kuralın işlenmesini durdurmak için [L] kullanın.

  • Yönlendirmelerinizi httpstatus.io gibi araçlarla test edin.

  • Aynı blokta Redirect ve RewriteRule’ü fazla karıştırmayın — tutarlılık için RewriteRule’u tercih edin.

Sonuç

.htaccess dosyası, Apache tabanlı web siteniz üzerinde ayrıntılı kontrol sağlayan güçlü bir yapılandırma aracıdır — genellikle ana sunucu dosyalarınıza dokunmadan. İster eski sayfaları yönlendirmek, ister HTTPS’yi zorlamak, ister temiz URL’ler aracılığıyla SEO’yu geliştirmek, ister hassas alanlara erişimi kısıtlamak isteyin, .htaccess tüm bunları sadece birkaç satır kodla mümkün kılar.

En azından birkaç .htaccess direktifini anlamak ve ustalaşmak, web sitenizin performansını, güvenliğini ve kullanılabilirliğini önemli ölçüde artırabilir. Bu, site yapısındaki değişikliklere hızlı bir şekilde yanıt vermenizi, bozuk bağlantıları önlemenizi ve ziyaretçileriniz için tutarlı bir deneyim sağlamanızı sağlar.

Pratik Örnek: Eski URL’leri Yeni URL’lere Yönlendirme

Blogunuzu yeniden yapılandırdığınızı ve eski bir yazıdan yeni bir konuma trafik yönlendirmek istediğinizi hayal edin:

Redirect 301 /old-blog-post https://www.example.com/blog/new-post

Bu basit satır, şunu garanti eder:

  • Arama motorları SEO değerini yeni URL’ye aktarır

  • Kullanıcılar 404 sayfasına düşmez

  • Yönlendirmeler, 301 (kalıcı) durum kodu ile anında gerçekleşir