.htaccess ile Yönlendirme: Apache Sunucularında Yönlendirmeleri Yönetmeye Yönelik Eksiksiz Kılavuz
Yönlendirmeler, bir web yöneticisinin araç setindeki en kritik araçlar arasındadır. İster sitenizin URL’lerini yeniden yapılandırıyor, ister yeni bir alan adına geçiyor, ister HTTPS’yi zorunlu kılıyor olun, yönlendirmeleri doğru şekilde ayarlamak; arama motoru sıralamalarınızı korumak ile tamamen kaybetmek arasındaki farkı belirleyebilir. Apache tabanlı sunucularda .htaccess dosyası, global sunucu yapılandırmasına dokunmadan güçlü ve esnek yönlendirmeler uygulamak için başvurulan çözümdür.
Bu kapsamlı kılavuzda, web sitesi trafiğinizi güvenle yönetebilmeniz için .htaccess yönlendirmeleri hakkında temel bilgilerden gelişmiş yapılandırmalara kadar bilmeniz gereken her şeyi ele alacağız.
—
İçindekiler
- .htaccess Nedir?
- Neden Yönlendirme Kullanılır?
- Yönlendirme Türleri Açıklandı
- .htaccess ile Yönlendirmeler Nasıl Kurulur
- Gelişmiş Yönlendirme Senaryoları
- .htaccess Yönlendirmeleri için En İyi Uygulamalar
- Yaygın Yönlendirme Sorunlarını Giderme
- Sonuç
—
1. .htaccess Nedir? {#what-is-htaccess}
.htaccess dosyası — hypertext access kısaltması — Apache web sunucuları tarafından kullanılan dizin düzeyinde bir yapılandırma dosyasıdır. Değişiklikleri uygulamak için kök düzeyinde erişim ve sunucu yeniden başlatması gerektiren global sunucu yapılandırma dosyalarının (httpd.conf gibi) aksine, .htaccess dizin düzeyinde çalışır ve kaydedildiği anda geçerli olur.
.htaccess’in temel özellikleri:
- Kapsam: Ayarlar, dosyanın yerleştirildiği dizin ve tüm alt dizinleri için geçerlidir.
- Yeniden başlatma gerekmez: Değişiklikler, Apache sunucusu yeniden başlatılmadan anında geçerli olur.
- Çok yönlülük: Yönlendirmelerin ötesinde,
.htaccessURL yeniden yazma, erişim kontrolü, özel hata sayfaları, MIME türü yapılandırması, önbelleğe alma kuralları ve daha fazlasını yönetebilir. - Yerleşim: Genellikle web sitenizin kök dizinine (
public_htmlveyawww) yerleştirilir.
> Önemli: .htaccess dosyasının çalışabilmesi için Apache sunucusunun sunucu yapılandırmasında AllowOverride değerinin All olarak ayarlanmış olması gerekir. Yönetilen bir barındırma ortamındaysanız bu genellikle varsayılan olarak etkinleştirilmiştir.
Kendi sunucunuzu çalıştırıyorsanız, ister bir VPS Hosting planında ister bir Dedicated Server üzerinde olun, Apache’nin yapılandırması üzerinde tam kontrole sahip olacak ve AllowOverride özelliğini gerektiği gibi etkinleştirebileceksiniz.
—
2. Neden Yönlendirme Kullanılır? {#why-use-redirects}
Yönlendirmeler, web sitesi yönetiminde birden fazla kritik amaca hizmet eder. İşte en yaygın kullanım durumlarının bir özeti:
URL Yapısı Değişiklikleri
Web sitenizi yeniden yapılandırdığınızda — örneğin /old-page.html adresinden /new-page.html adresine geçiş yaparken — eski URL’ye yer işareti koymuş veya bağlantı oluşturmuş kullanıcılar 404 Not Found hatasıyla karşılaşacaktır. Bir yönlendirme, onları otomatik olarak doğru hedefe iletir.
Alan Adı Geçişi
Web sitenizi yeni bir alan adına taşıyor musunuz? Uygun yönlendirmeler olmadan, eski alan adınıza gelen tüm trafik kaybolup gidecektir. Alan adı düzeyindeki yönlendirmeler, her ziyaretçinin ve her arama motoru tarayıcısının yeni alan adına sorunsuz şekilde yönlendirilmesini sağlar.
SEO Değerinin Korunması
Arama motorları, belirli URL’lere otorite ve sıralama sinyalleri atar. İçerik uygun bir yönlendirme olmadan taşındığında bu sinyaller kaybolur. Doğru şekilde uygulanmış bir 301 yönlendirmesi, bağlantı değerinin (“PageRank” olarak da bilinir) büyük çoğunluğunu eski URL’den yenisine aktararak organik arama sıralamalarınızı korur.
Kanonik URL’lerin Zorunlu Kılınması
Yinelenen içerik, yaygın bir SEO sorunudur. Örneğin http://yoursite.com, https://yoursite.com, http://www.yoursite.com ve https://www.yoursite.com aynı içeriği sunarak arama motorlarını yanıltabilir. Yönlendirmeler, URL’nizin tek bir kanonik sürümünü zorunlu kılar.
HTTPS’nin Zorunlu Kılınması
Alan adınıza bir SSL Sertifikası yüklediyseniz, tüm ziyaretçilerin otomatik olarak sitenizin güvenli HTTPS sürümüne yönlendirilmesini sağlamak isteyeceksinizdir. Bir .htaccess yönlendirmesi bunu otomatik olarak gerçekleştirir.
Geliştirilmiş Kullanıcı Deneyimi
Eski bağlantılara tıklayan veya eski URL’leri yazan kullanıcılar hiçbir zaman çıkmaz sokakla karşılaşmamalıdır. Yönlendirmeler, her zaman doğru sayfaya ulaşmalarını sağlayarak hemen çıkma oranlarını azaltır ve genel memnuniyeti artırır.
—
3. Yönlendirme Türleri Açıklandı {#types-of-redirects}
HTTP yönlendirmeleri durum kodlarıyla tanımlanır. Hangi durumda hangi kodu kullanacağınızı anlamak, yönlendirmeleri doğru şekilde uygulamanın temelidir.
| Durum Kodu | Ad | Kullanım Durumu |
|---|---|---|
| 301 | Kalıcı Yönlendirme | İçerik kalıcı olarak yeni bir URL’ye taşındı |
| 302 | Geçici Yönlendirme (Bulundu) | İçerik geçici olarak taşındı |
| 303 | Diğerine Bak | POST isteğine yanıt; GET kaynağına yönlendirme |
| 307 | Geçici Yönlendirme | Geçici taşıma; yöntem korunur |
| 308 | Kalıcı Yönlendirme | Kalıcı taşıma; yöntem korunur |
301 Yönlendirmesi — Kalıcı Yönlendirme
301 yönlendirmesi, SEO ve web sitesi yönetiminde en yaygın kullanılan yönlendirmedir. Tarayıcılara ve arama motorlarına, orijinal URL’deki içeriğin kalıcı olarak yeni bir konuma taşındığını bildirir. Arama motorları, dizinlerini yeni URL’yi yansıtacak şekilde güncelleyecek ve orijinal sayfanın sıralama otoritesinin büyük çoğunluğunu aktaracaktır.
301 kullanım durumları:
- Bir sayfayı kalıcı olarak taşıdığınızda veya URL’lerinizi yeniden yapılandırdığınızda
- Yeni bir alan adına geçiş yaptığınızda
- Yinelenen içeriği birleştirdiğinizde
- www ile www olmayan veya HTTP ile HTTPS arasında seçim yaptığınızda
302 Yönlendirmesi — Geçici Yönlendirme
302 yönlendirmesi, tarayıcılara ve arama motorlarına taşımanın geçici olduğunu ve orijinal URL’nin sonunda geri yükleneceğini bildirir. Arama motorları genellikle 302 yönlendirmeleri için bağlantı değeri aktarmaz ve orijinal URL’yi dizine eklemeye devam eder.
302 kullanım durumları:
- Geçici bir promosyon veya A/B testi yürütüyorsanız
- Bakım yapıyor ve kullanıcıları geçici olarak yönlendiriyorsanız
- Orijinal URL yakın gelecekte aktif kullanıma geri dönecekse
> Yaygın hata: Birçok geliştirici, aslında kalıcı bir yönlendirme amaçladıklarında 302 yönlendirmesi kullanır. SEO cezalarından ve arama motoru tarayıcılarını yanıltmaktan kaçınmak için kalıcı taşımalarda her zaman 301 kullanın.
—
4. .htaccess ile Yönlendirmeler Nasıl Kurulur {#how-to-set-up-redirects}
Herhangi bir değişiklik yapmadan önce, mevcut .htaccess dosyanızın yedeğini her zaman alın. Tek bir sözdizimi hatası 500 Internal Server Error hatasına neden olabilir ve sitenizi çevrimdışı bırakabilir.
.htaccess Dosyanıza Erişim
.htaccess dosyanıza şu yollarla erişebilirsiniz:
- FTP/SFTP istemcisi (ör. FileZilla) — kök dizininize gidin
- Barındırma kontrol panelinizde (cPanel, DirectAdmin, vb.) Dosya Yöneticisi
- SSH terminali —
nano /var/www/html/.htaccess
> Not: .htaccess gizli bir dosyadır. FTP istemcinizin veya dosya yöneticinizin gizli dosyaları (nokta ile başlayan dosyalar) gösterecek şekilde yapılandırıldığından emin olun.
—
Tek Bir Sayfayı Yönlendirme
En basit yönlendirme kullanım durumu, belirli bir URL’yi başka bir URL’ye iletmektir. Redirect yönergesini kullanın:
Redirect 301 /old-page.html https://www.yoursite.com/new-page.htmlAçıklama:
Redirect — basit yönlendirmeler için Apache yönergesi
301 — HTTP durum kodu (kalıcı yönlendirme)
/old-page.html — eski URL yolu (belge köküne göre)
https://www.yoursite.com/new-page.html — tam hedef URL
Geçici bir yönlendirme için 301 yerine 302 yazmanız yeterlidir:
Redirect 302 /promo-page.html https://www.yoursite.com/sale.html
—
Birden Fazla Belirli Sayfayı Yönlendirme
Birkaç ayrı sayfayı yönlendirmeniz gerekiyorsa, her yönlendirmeyi ayrı bir satıra yazın:
Redirect 301 /old-page-1.html https://www.yoursite.com/new-page-1.html
Redirect 301 /old-page-2.html https://www.yoursite.com/new-page-2.html
Redirect 301 /old-page-3.html https://www.yoursite.com/new-page-3.html
—
Tüm Alan Adını Yönlendirme
Tüm web sitenizi yeni bir alan adına taşırken, URL yollarını koruyarak tüm trafiği yönlendirmek için mod_rewrite kullanın:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.olddomain.com$ [NC]
RewriteRule ^(.*)$ https://www.newdomain.com/$1 [L,R=301]
Açıklama:
RewriteEngine On — mod_rewrite Apache modülünü etkinleştirir
RewriteCond %{HTTP_HOST} ^olddomain.com$ — olddomain.com adresine yapılan isteklerle eşleşir
[NC] — büyük/küçük harf duyarsız eşleştirme
[OR] — koşullar arasında mantıksal VEYA (www veya www olmayan ile eşleşir)
RewriteRule ^(.*)$ https://www.newdomain.com/$1 — URL yolunu koruyarak tüm trafiği yönlendirir ($1 alan adından sonraki her şeyi yakalar)
[L,R=301] — L bu son işlenecek kural anlamına gelir; R=301 kalıcı yönlendirmeyi belirtir
—
www’yi www Olmayan Adrese Yönlendirme
Kanonik alan adınız olarak www ile www olmayan arasında seçim yapmak önemli bir SEO kararıdır. Seçim yapıldıktan sonra, tüm trafiği tercih edilen sürüme yönlendirin.
www → www olmayan yönlendirme:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.yoursite.com$ [NC]
RewriteRule ^(.*)$ https://yoursite.com/$1 [L,R=301]
www olmayan → www yönlendirme:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^yoursite.com$ [NC]
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [L,R=301]
> İpucu: Tutarlı olun. Bir kanonik sürüm seçin ve ona bağlı kalın. www ile www olmayan arasındaki tutarsızlık, yinelenen içerik sorunları yaratır ve SEO sinyallerinizi zayıflatır.
—
HTTP’yi HTTPS’ye Yönlendirme
Bir SSL sertifikası yükledikten sonra, tüm trafiği güvenli HTTPS protokolünü kullanmaya zorlamalısınız. Bu, hem güvenlik hem de SEO açısından en önemli yönlendirmelerden biridir; Google, HTTPS’yi bir sıralama sinyali olarak kullanmaktadır.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Açıklama:
RewriteCond %{HTTPS} off — mevcut isteğin HTTPS kullanmadığını kontrol eder
%{HTTP_HOST} — ana bilgisayar adını dinamik olarak ekler (herhangi bir alan adı için çalışır)
%{REQUEST_URI} — tam URL yolunu ve sorgu dizesini korur
HTTP’den HTTPS’ye + www olmayandan www’ye birleşik yönlendirme:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www. [NC]
RewriteRule ^ https://yoursite.com%{REQUEST_URI} [L,R=301]
—
Bir Dizini Yönlendirme
Tüm bir dizini yeni bir konuma yönlendirmek için:
RedirectMatch 301 ^/old-directory/(.*)$ https://www.yoursite.com/new-directory/$1
Bu, düzenli ifadeleri destekleyen RedirectMatch kullanır ve dosya yolunu korurken belirli bir dizindeki tüm URL’leri eşleştirip yönlendirmenize olanak tanır.
—
Sorgu Dizesine Göre Yönlendirme
Bazen belirli sorgu parametreleri içeren URL’leri yönlendirmeniz gerekebilir:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=123$
RewriteRule ^page.php$ https://www.yoursite.com/new-page/? [L,R=301]
Hedef URL’nin sonundaki ?, yönlendirilen URL’den orijinal sorgu dizesini kaldırır.
—
5. Gelişmiş Yönlendirme Senaryoları {#advanced-redirect-scenarios}
Bakım Sayfasına Yönlendirme
Planlı bakım sırasında, kendi IP adresinizin geçişine izin verirken tüm ziyaretçileri geçici bir bakım sayfasına yönlendirin:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^123.456.789.000$
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteRule ^(.*)$ /maintenance.html [L,R=302]
123.456.789.000 yerine gerçek IP adresinizi yazın.
Dizinlerde Sondaki Eğik Çizgiyi Zorunlu Kılma
Tutarsız sondaki eğik çizgiler yinelenen içerik oluşturabilir. Dizin URL’lerinde sondaki eğik çizgiyi zorunlu kılın:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ /$1/ [L,R=301]
Yönlendirmeli Özel 404 Hata Sayfası
Geleneksel bir yönlendirme olmasa da, özel bir 404 sayfası yapılandırmak bozuk bağlantılarla karşılaşıldığında kullanıcı deneyimini iyileştirir:
ErrorDocument 404 /404.html
—
6. .htaccess Yönlendirmeleri için En İyi Uygulamalar {#best-practices}
Bu en iyi uygulamaları takip etmek, yaygın tuzaklardan kaçınmanıza ve yönlendirmelerinizin en iyi şekilde çalışmasını sağlamanıza yardımcı olacaktır.
✅ Kalıcı Değişiklikler için Her Zaman 301 Kullanın
İçerik kalıcı olarak taşındığında 301 yönlendirmesi kullanın. Bu, arama motorlarının sıralama otoritesini yeni URL’ye aktarmasını ve dizinlerini buna göre güncellemesini sağlar.
✅ Düzenlemeden Önce Yedek Alın
.htaccess dosyanızda herhangi bir değişiklik yapmadan önce, yerel makinenize bir kopyasını indirin. Bir sözdizimi hatası 500 Internal Server Error hatasına neden olarak sitenizi anında çevrimdışı bırakabilir.
✅ Uygulamadan Sonra Tüm Yönlendirmeleri Test Edin
Şu araçları kullanın:
Redirect Checker (redirect-checker.org)
Screaming Frog SEO Spider — sitenizi tarar ve yönlendirme zincirlerini tespit eder
Google Search Console — Google’ın yönlendirmelerinizi nasıl işlediğini izler
Terminalde curl komutu: curl -I https://yoursite.com/old-page.html✅ Yönlendirme Zincirlerinden Kaçının
Bir yönlendirme zinciri, A URL’si B URL’sine, B URL’si de C URL’sine yönlendirdiğinde oluşur. Her atlama gecikme ekler ve zincir boyunca aktarılan SEO değerini azaltır. Her zaman doğrudan nihai hedefe yönlendirin.
Kötü:
/page-a → /page-b → /page-cİyi:
/page-a → /page-c
/page-b → /page-c✅ Yönlendirme Döngülerinden Kaçının
Bir yönlendirme döngüsü, A URL’si B URL’sine, B URL’si de A URL’sine geri yönlendirdiğinde oluşur. Bu, tarayıcı hatasına neden olur ve sayfayı erişilemez kılar. Yönlendirme mantığınızı dağıtmadan önce her zaman doğrulayın.
✅ .htaccess’i Sade Tutun
Sunucunuza gelen her istek, Apache’nin .htaccess dosyasını okumasına neden olur. Onlarca gereksiz kural içeren şişirilmiş bir dosya sunucunuzu yavaşlatabilir. Yalnızca aktif olarak ihtiyaç duyduğunuz kuralları saklayın.
✅ Her Yerde HTTPS Kullanın
Henüz yapmadıysanız, bir SSL sertifikası yükleyin ve tüm HTTP trafiğini HTTPS’ye yönlendirin. Bu, temel bir güvenlik gerekliliği ve Google’ın onaylanmış bir sıralama faktörüdür. AlexHost, alan adlarınızda hızla dağıtılabilen SSL Sertifikaları sunmaktadır.
✅ Google Search Console’da Yönlendirmeleri İzleyin
Yönlendirmeleri uyguladıktan sonra — özellikle alan adı geçişinin ardından — Google’ın yeni URL’lerinizi doğru şekilde dizine ekleyip eklemediğinden emin olmak için Google Search Console’un Kapsam ve URL İnceleme raporlarını izleyin.
—
7. Yaygın Yönlendirme Sorunlarını Giderme {#troubleshooting}
500 Dahili Sunucu Hatası
Neden: .htaccess dosyasında sözdizimi hatası
Çözüm: .htaccess sözdizimini dikkatlice gözden geçirin. Eksik bir boşluk veya köşeli parantez bile bu hataya neden olabilir. Yedeğinizi geri yükleyin ve değişiklikleri birer birer yeniden uygulayın.
Yönlendirme Çalışmıyor
Neden: mod_rewrite etkin olmayabilir veya AllowOverride değeri All olarak ayarlanmamış olabilir
Çözüm: mod_rewrite özelliğinin etkin olduğundan (Ubuntu/Debian’da a2enmod rewrite) ve Apache sanal ana bilgisayar yapılandırmanızda AllowOverride All değerinin ayarlandığından emin olun.
Yönlendirme Döngüsü (ERR_TOO_MANY_REDIRECTS)
Neden: İki veya daha fazla yönlendirme kuralı birbirine işaret ediyor
Çözüm: Kurallarınızı dikkatlice gözden geçirin. HTTPS yönlendirmeleri için RewriteCond değerinizin %{HTTPS} durumunu doğru şekilde kontrol ettiğinden emin olun. Bazı sunucu ortamları (ör. yük dengeleyicinin arkasındakiler) bunun yerine %{HTTP:X-Forwarded-Proto} kontrolü gerektirebilir.
Yönlendirme Sorgu Dizelerini Yanlış Aktarıyor
Neden: Sorgu dizeleri beklendiği gibi işlenmiyor
Çözüm: RewriteCond içinde %{QUERY_STRING} kullanın ve sorgu dizelerini gerektiği gibi kaldırmak veya korumak için hedef URL’ye ? ekleyin.
.htaccess Dosyası Okunmuyor
Neden: Dosya yanlış adlandırılmış veya yanlış dizine yerleştirilmiş olabilir
Çözüm: Dosyanın tam olarak .htaccess (baştaki nokta ve dosya uzantısı olmadan) olarak adlandırıldığından ve doğru dizine yerleştirildiğinden emin olun.
—
8. Sonuç {#conclusion}
.htaccess yönlendirmelerinde uzmanlaşmak, Apache tabanlı barındırma ortamlarında çalışan her web geliştiricisi, SEO uzmanı veya sistem yöneticisi için temel bir beceridir. İster tek bir sayfayı yönlendiriyor, ister tüm bir alan adını taşıyor, ister HTTPS’yi zorunlu kılıyor, ister kanonik URL’lerinizi birleştiriyor olun, .htaccess dosyası global sunucu yapılandırma dosyalarına erişim gerektirmeden tüm bunları yönetmek için güçlü ve esnek bir mekanizma sunar.
Temel çıkarımlar:
- SEO değerini korumak için kalıcı taşımalarda 301 yönlendirmesi kullanın
- 302 yönlendirmesini yalnızca gerçekten geçici durumlar için kullanın
- Düzenlemeden önce
.htaccessdosyanızı her zaman yedekleyin - Performansı ve SEO bütünlüğünü korumak için yönlendirme zincirlerinden ve döngülerinden kaçının
- Güvenilir araçlar kullanarak uygulamadan sonra her yönlendirmeyi test edin
Barındırma ortamınızın kalitesi de yönlendirmelerin ne kadar etkili çalıştığında önemli bir rol oynar. Hızlı ve iyi yapılandırılmış bir sunucu, yönlendirme işleminin kullanıcılarınızın deneyimine minimum gecikme katmasını sağlar. İster tam Apache kontrolüne sahip esnek bir VPS Hosting ortamına, ister yüksek trafikli web siteleri için güçlü bir Dedicated Server‘a, ister .htaccess desteği yerleşik olarak gelen kolay yönetilebilir bir Shared Web Hosting planına ihtiyaç duyun, AlexHost ihtiyaçlarınızı karşılayacak altyapıya sahiptir.
Birden fazla web sitesi veya alan adı yönetiyorsanız, tüm web altyapınızı tek bir güvenilir platform altında kolaylaştırmak için barındırma hizmetinizi AlexHost üzerinden Alan Adı Kaydı ile eşleştirmeyi düşünün.
Bu kılavuzda ele alınan teknikleri uygulayarak ziyaretçilerinizin her zaman doğru sayfaya ulaşmasını, her site değişikliğinde arama motoru sıralamalarınızın korunmasını ve sunucunuzun gereksiz yönlendirme yükü olmadan verimli çalışmasını sağlayacaksınız.
