MeoHost Logo
Menü
BilgiMerkezi
Bilgi Merkezi/Web Sunucuları/Apache'de RewriteRule ile URL Yönlendirme

Apache'de RewriteRule ile URL Yönlendirme

Web Sunucuları24.02.2026Ahmet Yılmaz9 dk okuma

Apache'de RewriteRule, web sunucusunun gelen HTTP isteklerini işlerken URL'leri dinamik olarak yeniden yazmak veya yönlendirmek için kullanılan güçlü bir modül ve direktiftir. Bu özellik, SEO'yu iyileştirmek, kullanıcı deneyimini kolaylaştırmak, eski URL'leri yeni URL'lere yönlendirmek ve karmaşık URL yapılarını basitleştirmek için kritik öneme sahiptir.

Apache'de RewriteRule ile URL Yönlendirme

Apache'de RewriteRule ile URL Yönlendirme

Apache HTTP Server, dünyanın en yaygın kullanılan web sunucularından biridir ve modüler yapısı sayesinde çeşitli işlevler eklenebilir. mod_rewrite modülü, bu işlevselliğin temelini oluşturur ve RewriteRule direktifi ile bu modülün gücü serbest bırakılır. Bu direktif, belirli bir desene uyan URL'leri, belirtilen başka bir URL'ye veya kaynağa dönüştürmek için kullanılır. Bu, web sitelerinin sürdürülebilirliği, erişilebilirliği ve arama motoru performansı açısından vazgeçilmezdir. Özellikle büyük web sitelerinde veya CMS sistemlerinde, URL yapısındaki değişiklikler veya mobil uyumluluk için URL'leri düzenleme ihtiyacı doğduğunda RewriteRule hayati bir rol oynar.

Apache'de RewriteRule Nasıl Çalışır?

Apache'deki RewriteRule direktifinin çalışma mekanizması, belirli kurallar dizisi üzerinden işler. Bu kurallar, sunucu yapılandırma dosyalarında (genellikle .htaccess veya ana Apache yapılandırma dosyası olan httpd.conf içinde) tanımlanır. Bir isteğin işlenmesi sırasında, mod_rewrite modülü aktif hale gelir ve tanımlanan kuralları sırayla kontrol eder.

  1. İstek Alınması: Bir kullanıcı tarayıcı aracılığıyla bir URL'ye istek gönderdiğinde, Apache bu isteği alır.
  2. mod_rewrite Aktivasyonu: Eğer mod_rewrite modülü etkinleştirilmişse ve ilgili yapılandırma mevcutsa, modül bu isteği işlemeye başlar.
  3. Kural Kontrolü: RewriteRule direktifleri, yapılandırma dosyasında belirtilen sıraya göre işlenir. Her kural, bir deseni (regex ile tanımlanır) ve bu desenle eşleşen bir hedefi içerir.
  4. Desen Eşleştirme: Gelen URL, kuralın ilk parametresi olan desene karşı kontrol edilir. Desen, URL'nin hangi bölümünün eşleştirileceğini tanımlar ve genellikle Perl ile uyumlu düzenli ifadeler (regex) kullanır.
  5. Yeniden Yazma veya Yönlendirme: Eğer gelen URL, bir kuralın deseniyle eşleşirse, kuralın ikinci parametresi olan hedef URL'ye göre işlem yapılır. Bu işlem iki ana şekilde gerçekleşebilir:
    • URL Yeniden Yazma (Rewrite): Bu durumda, URL istemciye gösterilmeden sunucu tarafından değiştirilir. İstemci, yeniden yazılmış URL'yi görmez. Örneğin, /urun.php?id=123 URL'si /urunler/123 olarak yeniden yazılabilir. Bu, SEO açısından faydalıdır çünkü daha temiz ve okunabilir URL'ler sunar.
    • URL Yönlendirme (Redirect): Bu durumda, Apache istemciye bir HTTP durum kodu (örneğin 301 Kalıcı Taşıma veya 302 Geçici Taşıma) göndererek yeni URL'ye gitmesini söyler. İstemci tarayıcısı, belirtilen yeni URL'ye giderek isteği tekrar gönderir. Örneğin, eski bir sayfanın URL'si değiştiğinde, kullanıcıları otomatik olarak yeni adrese yönlendirmek için kullanılır.
  6. Bayrakların (Flags) Uygulanması: RewriteRule direktifinin sonunda çeşitli bayraklar kullanılabilir. Bu bayraklar, yeniden yazma veya yönlendirme işleminin nasıl gerçekleştirileceğini belirler. Örneğin, [R=301] kalıcı yönlendirme yapar, [L] ise bu kuraldan sonra başka kural kontrol edilmeyeceğini belirtir.
  7. Sonuç: Eşleşen bir kural bulunduğunda ve işlem uygulandığında, işlem tamamlanır veya bir sonraki kurala geçilir ([L] bayrağı kullanılmadıysa). Eğer hiçbir kural eşleşmezse, URL olduğu gibi işlenir.

Bu süreç, karmaşık URL manipülasyonlarına olanak tanır. Örneğin, belirli bir dizindeki tüm statik dosya isteklerini başka bir sunucuya veya farklı bir konuma yönlendirmek, belirli sorgu parametrelerine sahip URL'leri standartlaştırmak veya belirli kullanıcı ajanlarına farklı içerikler sunmak gibi işlemler bu mekanizma ile gerçekleştirilebilir. Apache'nin esnekliği, RewriteCond direktifi ile ek koşullar belirlemeye de imkan tanır, bu da kuralların daha spesifik durumlarda tetiklenmesini sağlar.

Apache'de RewriteRule Kullanımı ve Örnekleri

RewriteRule kullanımı, doğru desen tanımı ve bayrakların seçimi ile doğrudan ilişkilidir. Genellikle .htaccess dosyaları, her dizin için ayrı yapılandırma imkanı sunduğundan ve sunucu yapılandırmasına doğrudan erişim gerektirmediğinden tercih edilir. Ancak, performans açısından ana yapılandırma dosyası daha iyi olabilir. mod_rewrite modülünün etkinleştirilmesi ilk adımdır; bu genellikle sunucu yöneticisi tarafından yapılır.

Temel RewriteRule Yapısı

Bir RewriteRule direktifi şu genel yapıya sahiptir:

RewriteRule Desen Hedef [Bayraklar]
  • Desen (Pattern): Gelen URL'nin yeniden yazılıp yazılmayacağını belirlemek için kullanılan düzenli ifadedir. Bu ifade, URL'nin sorgu dizisi hariç kısmına uygulanır.
  • Hedef (Substitution): Desenle eşleşen URL'nin hangi yeni URL'ye veya kaynağa dönüştürüleceğini belirten ifadedir. Bu, mutlak bir yol, göreceli bir yol veya tam bir URL olabilir. Desen içindeki yakalama grupları (parantezler ile belirtilir) hedefte kullanılabilir.
  • Bayraklar (Flags): Yeniden yazma işleminin davranışını değiştiren isteğe bağlı parametrelerdir. Bazı yaygın bayraklar şunlardır:
    • L (Last): Bu kuraldan sonra başka kural kontrol edilmez.
    • R (Redirect): İstemciye bir HTTP yönlendirmesi gönderilir. R=301 kalıcı, R=302 geçici yönlendirme yapar.
    • NC (NoCase): Desen eşleştirmesinde büyük/küçük harf duyarsızlığı sağlar.
    • OR (Or): Birden fazla RewriteRule'u birleştirmek için kullanılır. (Daha çok RewriteCond ile kullanılır.)
    • PT (PassThrough): Sunucu tarafından işlenmek üzere isteği yeniden yazar.
    • QSA (Query String Append): Gelen sorgu dizisini (query string) hedef URL'ye ekler.

Yaygın Kullanım Senaryoları ve Örnekler

1. Eski URL'leri Yeni URL'lere Yönlendirme (301 Kalıcı Yönlendirme)

Web sitenizin yapısını değiştirdiniz ve eski URL'leri yeni URL'lere yönlendirmek istiyorsunuz. Örneğin, /eski-sayfa.html'yi /yeni-sayfa'ya yönlendirmek:

RewriteEngine On
RewriteRule ^eski-sayfa\.html$ /yeni-sayfa [R=301,L]

Bu kural, tam olarak eski-sayfa.html ile eşleşen bir isteği alır ve bunu /yeni-sayfa'ya kalıcı olarak yönlendirir. ^ ve $ karakterleri, desenin tam eşleşmesini sağlar. \., nokta karakterini literal olarak eşleştirmek içindir.

2. Sorgu Parametrelerini Temizleme (SEO Dostu URL'ler)

Dinamik olarak oluşturulan URL'leri daha okunabilir hale getirmek için kullanılır. Örneğin, /urun.php?id=123&kategori=elektronik URL'sini /urunler/123/elektronik'e dönüştürmek:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^urunler/([0-9]+)/([a-zA-Z-]+)$ /urun.php?id=$1&kategori=$2 [QSA,L]

Burada RewriteCond kullanılmıştır. İlk iki RewriteCond, isteğin mevcut bir dosya veya dizine yönelik olmadığını kontrol eder. Bu, sunucunun fiziksel dosya isteklerini yanlışlıkla yeniden yazmasını önler. Desen ^urunler/([0-9]+)/([a-zA-Z-]+)$, "urunler/" ile başlayan, ardından bir veya daha fazla rakam (ilk yakalama grubu: $1) ve ardından bir veya daha fazla harf içeren bir yapıyı yakalar. Bu yakalanan değerler, /urun.php?id=$1&kategori=$2 hedefinde kullanılır. QSA bayrağı, orijinal sorgu dizisini de ekler.

3. www Prefiksini Kaldırma veya Ekleme

Sitenizin hem www.example.com hem de example.com üzerinden erişilebilir olmasını sağlamak ve tek bir canonical URL kullanmak için kullanılır. Genellikle www'yi kaldırmak tercih edilir:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Bu kural, host adı www. ile başlıyorsa ([NC] ile büyük/küçük harf duyarsız), tüm URL'yi (^(.*)$, tümünü yakalar: $1) www olmadan (%1, yakalanan alan adı) aynı yola yönlendirir.

4. Klasörleri Gizleme

/dizin/index.php gibi URL'leri sadece /dizin/ gibi göstermek için:

RewriteEngine On
RewriteRule ^dizin/$ /dizin/index.php [L]

Bu, kullanıcıya daha temiz bir URL sunar.

5. Dosya Uzantılarını Gizleme

.php, .html gibi uzantıları URL'lerden kaldırmak için:

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

Bu, /sayfa isteğini /sayfa.php'ye, /urunler/123 isteğini ise /urunler.php?id=123'e dönüştürür.

RewriteRule Yapılandırması İçin En İyi Pratikler

RewriteRule direktiflerini doğru ve verimli kullanmak için bazı en iyi pratiklere uyulması önemlidir. Yanlış yapılandırılmış kurallar, site performansını olumsuz etkileyebilir, sonsuz döngülere neden olabilir veya beklenmedik davranışlara yol açabilir.

  • Test Edin: Herhangi bir kuralı canlı ortama uygulamadan önce mutlaka test edin. Bu, yerel bir geliştirme ortamında veya bir staging sunucusunda yapılabilir.
  • Kural Sırasına Dikkat Edin: Kurallar, yapılandırma dosyasında listelendiği sırayla işlenir. En spesifik kuralları önce, daha genel kuralları sonra yerleştirmek genellikle daha iyi sonuç verir. [L] bayrağı, kural işlendikten sonra işlemin durdurulmasını sağlar ve bu da performansı artırır.
  • RewriteCond Kullanımı: Yönlendirme veya yeniden yazma işlemlerini belirli koşullara bağlamak için RewriteCond direktifini kullanın. Bu, kuralların yalnızca gerektiğinde çalışmasını sağlar. Örneğin, yalnızca belirli bir IP adresinden gelen isteklere izin vermek veya belirli bir tarayıcıyı farklı yönlendirmek için kullanılabilir.
  • Performans Odaklılık: Özellikle yüksek trafikli sitelerde, karmaşık düzenli ifadeler veya çok sayıda kural performansı etkileyebilir. Mümkün olduğunca basit ve verimli desenler kullanmaya çalışın. .htaccess dosyaları her istekte okunup işlendiği için, ana Apache yapılandırma dosyasına göre bir miktar performans kaybına neden olabilir.
  • Düzenli İfadeleri (Regex) Anlayın: RewriteRule desenleri düzenli ifadelerle yazılır. Bu ifadelerin doğru anlaşılması, hatalı eşleşmeleri veya eşleşmeme durumlarını önlemek için kritiktir.
  • RewriteEngine On: mod_rewrite modülünü kullanabilmek için yapılandırma dosyasının başında RewriteEngine On direktifinin bulunması gerekir.
  • Sonsuz Döngülerden Kaçının: Bir kuralın kendisini veya başka bir kuralı tetikleyerek sonsuz bir döngüye girmemesine dikkat edin. Özellikle [L] bayrağını doğru kullanmak bu döngüleri engeller.
  • Kavramsal Netlik: Yapılandırma dosyanızdaki kuralları yorum satırlarıyla (# ile başlar) açıklayın. Bu, gelecekte kuralları anlamayı ve değiştirmeyi kolaylaştırır.

Sık Yapılan Hatalar ve Çözümleri

RewriteRule kullanırken karşılaşılabilecek bazı yaygın hatalar ve bunların çözümleri şunlardır:

  • Hata: URL'ler yeniden yazılmıyor veya yönlendirilmiyor.
    • Çözüm: RewriteEngine On direktifinin etkin olduğundan emin olun. Kuralın doğru sıraya sahip olup olmadığını kontrol edin. [L] bayrağının olmaması, sonraki kuralların işlemi bozmasına neden olabilir. Desen eşleşmesinin doğru yapıldığını regex test araçlarıyla doğrulayın.
  • Hata: Sonsuz yönlendirme döngüsü (örneğin, tarayıcıda "Bu web sitesi bir döngüye neden oluyor" hatası).
    • Çözüm: Kuralların birbirini tetikleyip kırmadığını kontrol edin. Özellikle [L] bayrağını agresif kullanmak veya RewriteCond ile doğru koşulları sağlamamak bu duruma yol açabilir. URL'yi normalize eden kuralları (örneğin www ekleme/kaldırma) genellikle en başa koymak ve [L] ile sonlandırmak iyi bir pratiktir.
  • Hata: Site performansı düştü.
    • Çözüm: Kullanılan düzenli ifadelerin karmaşıklığını gözden geçirin. Çok sayıda veya gereksiz karmaşık kural performansı düşürebilir. .htaccess yerine ana yapılandırma dosyasını kullanmayı düşünün.
  • Hata: Statik dosyalar (CSS, JS, resimler) yüklenmiyor.
    • Çözüm: RewriteCond %{REQUEST_FILENAME} !-f ve RewriteCond %{REQUEST_FILENAME} !-d gibi koşulların, bu tür dosyaların yeniden yazma işlemine tabi tutulmasını engellediğinden emin olun. Bu koşullar, statik dosya isteklerinin fiziksel dosya olarak işlenmesini sağlar.
  • Hata: Sorgu dizisi (query string) kayboluyor.
    • Çözüm: Hedef URL'ye [QSA] bayrağını eklediğinizden emin olun. Bu bayrak, orijinal isteğin sorgu dizisini hedef URL'ye ekler.

Teknik Özellikler ve Standartlar

RewriteRule direktifi, Apache'nin mod_rewrite modülünün bir parçasıdır. Bu modül, RFC 3986 (URI Belirleyicileri: Genel Sözdizimi) standardına uygun URL işleme yetenekleri sunar. Düzenli ifadeler için kullanılan dil, Perl Compatible Regular Expressions (PCRE) ile uyumludur. Bu, desen eşleştirme için geniş bir esneklik sağlar.

RewriteRule'nun hedefi, mutlak veya göreceli yollar olabileceği gibi, bir protokol (http, https) ve alan adı da içerebilir. Yönlendirmeler için kullanılan HTTP durum kodları (örneğin, 301, 302, 307, 308), web standartlarına uygun olarak kullanılır ve arama motorları ile tarayıcılar tarafından doğru şekilde yorumlanır. Modülün kendisi, Apache'nin HTTP sunucusu mimarisi içinde bir filtre olarak çalışır, bu da gelen isteklerin işlenmesi sırasında URL'leri manipüle etmesine olanak tanır.

2026 Sektör Verileri ve İstatistikler

Web sunucusu teknolojileri ve URL yönetimi, web'in temel taşlarından biridir. W3Techs 2026 verilerine göre, Apache hala web sitelerinin önemli bir yüzdesine güç vermeye devam etmektedir, ancak Nginx gibi alternatifler de pazar payını artırmaktadır. Bu durum, Apache'nin uzun ömürlülüğünü ve mod_rewrite gibi güçlü özelliklerinin geçerliliğini koruduğunu göstermektedir. Statista 2026 raporlarına göre, kullanıcıların daha temiz ve mobil uyumlu URL'lere olan ilgisi artmakta, bu da RewriteRule gibi araçların SEO ve kullanıcı deneyimi optimizasyonundaki önemini vurgulamaktadır. Cloudflare Radar 2026 verileri, web trafiğinin artan hız ve güvenlik beklentilerini ortaya koymaktadır; bu bağlamda, doğru URL yönlendirmeleri ve yeniden yazmaları, site hızını ve arama motoru sıralamalarını doğrudan etkileyebilir. Netcraft 2026 araştırmaları, milyarlarca aktif web sitesi olduğunu göstermektedir; bu ölçekteki internet varlığında, tutarlı ve optimize edilmiş URL yapıları yönetilebilirliği ve erişilebilirliği sağlamak için kritik öneme sahiptir.

İlgili Konular

Apache'nin sunduğu güçlü yönlendirme yeteneklerini daha iyi anlamak için, temel Web Sunucusu Kurulumu makalesine göz atabilirsiniz. Ayrıca, Apache ve Nginx gibi popüler web sunucularının karşılaştırmalı analizini içeren Apache vs Nginx Hangisi Daha İyi? başlıklı makalemiz, farklı sunucu yapılandırmaları hakkında ek bilgiler sunmaktadır.

Sık Sorulan Sorular

Apache'de RewriteRule ile URL Yönlendirme hakkında merak edilenler

Hayır, rehberimiz başlangıç seviyesindeki kullanıcılar için hazırlanmıştır. Adım adım talimatları takip ederek kolayca uygulayabilirsiniz.
Evet, 7/24 teknik destek ekibimiz size yardımcı olmaya hazır. Canlı destek, e-posta veya telefon ile bizlere ulaşabilirsiniz.
Rehberimizdeki tüm işlemler güvenlik standartlarına uygun olarak hazırlanmıştır. Verilerinizin güvenliği bizim için önceliklidir.
Rehberlerimiz genellikle en yaygın sistemler için hazırlanmıştır. Farklı sistemler için uyarlama notları veya alternatif rehberlerimiz bulunmaktadır.

Sorunuz burada yok mu?

Canlı destek ekibimiz size yardımcı olmaya hazır.

İletişime Geç
A

Ahmet Yılmaz

İçerik Uzmanı

Web teknolojileri ve hosting çözümleri konusunda uzmanlaşmış içerik yazarı.

Web HostingTeknik Dokümantasyon
Yayın: 24 Şubat 2026
Güncelleme: 13 Şubat 2026
Uzman İçerik
Doğrulanmış Bilgi
Güncel Bilgi