Htaccess Yönlendirme Oluşturucu

Her blogu taşındığınızda, URL şemasınızı değiştirdiğinizde veya eski sayfaları birleştirdiğinizde, Apache’nin .htaccess dosyası temizlik işlemlerinin ana yükünü üstlenir. Bu üretici, basit bir kaynak-hedef eşlemeyi doğru RewriteRule direktiflerine ve uygun bayraklara dönüştürerek sitenizin .htaccess dosyasına kolayca yerleştirilebilir hâle getirir.

Yönlendirme kurallarını nasıl oluştururuz?

  1. 1

    Yönlendirme türünü seçin

    301: SEO açısından güvenli geçişler için kalıcı; 302: A/B testleri ve mevsimsel yönlendirmeler için geçici.

  2. 2

    Kaynak ve hedefi girin

    Tam yollar veya regex desenleri: eski yol, RewriteRule desenine dönüşür; yeni URL ise yönlendirme hedefi olur.

  3. 3

    Bayrakları kontrol edin

    Her kural otomatik olarak doğru bayrağı (`[R=301,L]` veya `[R=302,L]`) alır; böylece blok mod_rewrite ile doğrudan çalışır.

  4. 4

    Yönergeleri kopyalayın

    Oluşturulan blok, .htaccess dosyasındaki `<IfModule mod_rewrite.c>` bölümünün içine yerleştirilir.

mod_rewrite ve mod_alias direktifleri

Apache, yönlendirmeler için iki modül sunar. Seçim, kuralın karmaşıklığına göre yapılır.

Karar verme rehberi

Gereksinim Kullanım Örnek
Tam eski URL → tam yeni URL Redirect Redirect 301 /old /new
Joker karakter öneki RedirectMatch RedirectMatch 301 ^/blog/(.*)$ /articles/$1
Sorgu dizesi eşleşmesi RewriteRule Aşağıya bakın
HTTPS’yi zorunlu kıl RewriteRule RewriteCond %{HTTPS} off + kural
Koşullu (tarayıcı, cookie) RewriteRule RewriteCond ile

Örnek: www ile HTTPS’yi zorunlu kıl

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Örnek: /blog/post-123 adresini /articles/post-123 adresine taşıma

RewriteEngine On
RewriteRule ^blog/(.*)$ /articles/$1 [L,R=301]

Göreceğiniz bayraklar

  • L, son; diğer kuralları işlemeye devam etme.
  • R=301 veya R=302, bu durum koduyla yönlendir.
  • NC, büyük/küçük harfe duyarsız.
  • QSA, orijinal sorgu dizesini yeni URL’ye ekle.
  • NE, hedefteki özel karakterleri yeniden kodlama.

Yaygın Hatalar

  • RewriteEngine On’ı unutmak, bu olmadan hiçbir RewriteRule etki etmez.
  • Varsayılan olarak 302 kullanmak, Google bunu geçici sayar; bu nedenle eski URL sıralamada kalmaya devam eder.
  • Zincirli yönlendirmeler (eski → ara → son), her zaman tek bir atlama hedefleyin; her ek atlama bağlantı değerini (link equity) düşürür ve gecikmeyi artırır.

Sık Sorulan Sorular

Kalıcı değişiklikler için 301 kodunu kullanın: site taşınması, URL slug değişikliği veya HTTPS yükseltmesi. Geçici durumlar için yalnızca 302 kodunu kullanın; örneğin bakım sayfasına yönlendirme veya A/B testi gibi. Arama motorları sıralama sinyallerini 301 üzerinden aktarır, 302 üzerinden ise güvenilir biçimde aktarmaz.

En yaygın neden, desendeki baştaki eğik çizgiyi unutmaktır. RewriteRule’de desen, baştaki eğik çizgi olmadan yolu eşleştirir (örneğin ^blog/); Redirect (mod_alias)’te ise desen bir eğik çizgiyle başlar (örneğin /blog). Bu iki kuralı birbirine karıştırmayın.

Evet, RewriteRule’den önce RewriteCond %{QUERY_STRING} ^id=123$ kullanın. Basit Redirect sorgu dizesini okumaz; yalnızca RewriteRule sorgu dizesiyle eşleşebilir.

Evet, bir sonraki istekte, Apache .htaccess dosyasını her istekte yeniden okur; sunucunun yeniden başlatılması gerekmez. Hiçbir şey olmazsa, ilgili dizinin vhost’unda AllowOverride All parametresinin ayarlı olduğunu kontrol edin.

İlgili Araçlar

Araç diğer dillerde mevcuttur