Apache Sunucularında Yönlendirmeleri Yönetmeye İlişkin Tam Kılavuz: .htaccess Aracılığıyla Yönlendirme
Yönlendirmeler, bir web yöneticisinin araç setindeki en kritik araçlardan biridir. Site URL’lerinizi yeniden yapılandırıyor, yeni bir etki alanına geçiş yapıyor veya HTTPS’yi zorunlu kılıyor olsanız da, yönlendirmeleri doğru şekilde ayarlamak, arama motoru sıralamalarınızı korumak ile tamamen kaybetmek arasındaki farkı oluşturabilir. Apache tabanlı sunucularda, .htaccess dosyası, global sunucu yapılandırmasına dokunmadan güçlü ve esnek yönlendirmeler uygulamak için tercih edilen çözümdür.
Bu kapsamlı kılavuzda, .htaccess yönlendirmeleri hakkında bilmeniz gereken her şeyi — temellerden ileri konfigürasyonlara kadar — ele alacağız, böylece web sitesi trafiğinizi güvenle yönetebilirsiniz.
1. .htaccess Nedir?
.htaccess dosyası — kısaca hypertext access anlamına gelir — Apache web sunucuları tarafından kullanılan bir dizin düzeyinde yapılandırma dosyasıdır. Global sunucu yapılandırma dosyalarından (httpd.conf gibi) farklı olarak, bu dosyalar root düzeyinde erişim gerektirir ve değişiklikleri uygulamak için sunucunun yeniden başlatılması gerekir, .htaccess dizin düzeyinde çalışır ve kaydedilir kaydedilmez hemen etkili 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 sunucusunu yeniden başlatmadan anında etkili 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ı işleyebilir. - Yerleşim: Genellikle web sitenizin kök dizinine (
public_htmlveyawww) yerleştirilir.
> Önemli: .htaccess işlevini görmesi için Apache sunucusunun sunucu yapılandırmasında AllowOverride değerinin All olarak ayarlanmış olması gerekir. Yönetilen bir barındırma ortamında iseniz, bu genellikle varsayılan olarak etkindir.
Kendi sunucunuzu çalıştırıyorsanız, ister VPS Hosting planında ister Dedicated Server‘da olsun, Apache’nin yapılandırması üzerinde tam kontrole sahip olacaksınız ve gerektiğinde AllowOverride etkinleştirebilirsiniz.
2. Neden Yönlendirmeler Kullanılır?
Yönlendirmeler, web sitesi yönetiminde birden fazla kritik amaca hizmet eder. İşte en yaygın kullanım durumlarının bir dökümü:
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ş yaptığınızda — eski URL’ye işaret eden yer imlerine veya bağlantılara sahip 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 basitçe kaybolacaktır. Alan adı düzeyindeki yönlendirmeler, her ziyaretçinin ve her arama motoru tarayıcısının yeni alan adına sorunsuzca iletilmesini sağlar.
SEO Değeri Koruması
Arama motorları, belirli URL’lere yetki 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, eski URL’den yeni URL’ye bağlantı öz sermayesinin çoğunu (genellikle “PageRank” olarak adlandırılır) iletir ve organik arama sıralamalarınızı korur.
Kanonik URL’leri Zorunlu Kılma
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 sunabilir ve arama motorlarını karıştırabilir. Yönlendirmeler, URL’nizin tek bir kanonik sürümünü zorunlu kılar.
HTTPS’yi Zorunlu Kılma
Alan adınıza bir SSL Sertifikası yüklediyseniz, tüm ziyaretçilerin otomatik olarak sitenizin güvenli HTTPS sürümüne sunulmasını sağlamak isteyeceksiniz. Bir .htaccess yönlendirmesi bunu otomatik olarak işler.
İyileştirilmiş Kullanıcı Deneyimi
Eski bağlantılara tıklayan veya eski URL’leri yazan kullanıcılar hiçbir zaman ölü bir uçla karşılaşmamalıdır. Yönlendirmeler, her zaman doğru sayfaya iniş sağlayarak, sıçrama oranlarını azaltır ve genel memnuniyeti artırır.
3. Yönlendirme Türleri Açıklandı
HTTP yönlendirmeleri durum kodları tarafından tanımlanır. Hangi kodun hangi durumda kullanılacağını anlamak, yönlendirmeleri doğru şekilde uygulamanın temelini oluşturur.
| 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ğerini Gör | 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önlendirme — 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 çoğunu aktaracaktır.
301’i şu durumlarda kullanın:
- Bir sayfayı kalıcı olarak taşıdığınızda veya URL’lerinizi yeniden yapılandırdığınızda
- Yeni bir etki alanına geçiş yaptığınızda
- Yinelenen içeriği birleştirdiğinizde
- www ve non-www veya HTTP ve HTTPS’yi zorunlu kıldığınızda
302 Yönlendirme — 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 söyler. Arama motorları genellikle 302 yönlendirmeleri için bağlantı öz sermayesini aktarmaz ve orijinal URL’yi dizine almaya devam eder.
302’yi şu durumlarda kullanın:
- Geçici bir promosyon veya A/B testi çalıştırdığınızda
- Bakım yapıyor ve kullanıcıları geçici olarak yönlendiriyorsunuz
- Orijinal URL yakın gelecekte etkin kullanıma dönecekse
> Yaygın hata: Birçok geliştirici aslında kalıcı bir yönlendirme amaçladıklarında 302 yönlendirmelerini kullanır. SEO cezalarından ve arama motoru tarayıcılarını kafa karıştırmaktan kaçınmak için kalıcı taşımalar için her zaman 301’i kullanın.
4. .htaccess Aracılığıyla Yönlendirmeleri Ayarlama
Herhangi bir değişiklik yapmadan önce, mevcut .htaccess dosyanızın bir yedeklemesini oluşturun. Tek bir sözdizimi hatası bir 500 Internal Server Error neden olabilir ve sitenizi çevrimdışı bırakabilir.
.htaccess Dosyanıza Erişim
.htaccess dosyanıza şu yollarla erişebilirsiniz:
- FTP/SFTP istemcisi (örn. FileZilla) — kök dizinine gidin
- Dosya Yöneticisi barındırma kontrol panelinizde (cPanel, DirectAdmin, vb.)
- SSH terminali —
nano /var/www/html/.htaccess
> Not: .htaccess gizli bir dosyadır. FTP istemcinizin veya dosya yöneticininizin 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, bir belirli 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 yazın:
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ırda listeleyin:
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 Bir Alanı Yönlendirme
Tüm web sitenizi yeni bir alana 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 isteklerini eşleştirir
[NC] — büyük/küçük harfe duyarsız eşleştirme
[OR] — koşullar arasında mantıksal VEYA (www veya www olmayan eşleşir)
RewriteRule ^(.*)$ https://www.newdomain.com/$1 — tüm trafiği yönlendirir, URL yolunu korur ($1 alanından sonraki her şeyi yakalar)
[L,R=301] — L bu kuralın işlenecek son kural olduğu anlamına gelir; R=301 kalıcı bir yönlendirme belirtir
www’den Non-www’ye Yönlendirme
www veya non-www seçimi kanonik alan olarak önemli bir SEO kararıdır. Seçim yaptıktan sonra, tüm trafiği tercih edilen sürüme yönlendirin.
www → non-www yönlendirmesi:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.yoursite.com$ [NC]
RewriteRule ^(.*)$ https://yoursite.com/$1 [L,R=301]
Non-www → www yönlendirmesi:
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 sadık kalın. www ve non-www arasındaki tutarsızlık yinelenen içerik sorunları oluşturur ve SEO sinyallerinizi zayıflatır.
HTTP’den 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, çünkü Google HTTPS’yi bir sıralama sinyali olarak kullanı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 için çalışır)
%{REQUEST_URI} — tam URL yolunu ve sorgu dizesini korur
Birleştirilmiş HTTP’den HTTPS’ye + non-www’den www’ye yönlendirmesi:
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 RedirectMatch kullanır, normal ifadeleri destekler ve belirli bir dizin içindeki tüm URL’leri eşleştirmenize ve yönlendirmenize izin verirken dosya yolunu korur.
Sorgu Dizesine Dayalı Yönlendirme
Bazen belirli sorgu parametreleri içeren URL’leri yönlendirmeniz gerekir:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=123$
RewriteRule ^page.php$ https://www.yoursite.com/new-page/? [L,R=301]
Hedef URL’deki sondaki ? orijinal sorgu dizesini yönlendirilen URL’den kaldırır.
5. Gelişmiş Yönlendirme Senaryoları
Bakım Sayfasına Yönlendirme
Planlanan bakım sırasında, tüm ziyaretçileri geçici bir bakım sayfasına yönlendir ve kendi IP adresinin geçmesine izin ver:
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 adresini koy.
Dizinlerde Sondaki Eğik Çizgiyi Zorla
Tutarsız sondaki eğik çizgiler yinelenen içerik oluşturabilir. Dizin URL’lerine sondaki eğik çizgiyi zorla:
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
Bu en iyi uygulamaları takip etmek, yaygın sorunlardan kaçınmanıza ve yönlendirmelerinizin optimal performans göstermesini 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 her zaman 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 kopya indirin. Bir söz dizimi hatası 500 Internal Server Error neden olabilir ve sitenizi anında çevrimdışı hale getirebilir.
✅ 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 tanımlar
Google Search Console — Google’ın yönlendirmelerinizi nasıl işlediğini izler
curl terminal komutu: curl -I https://yoursite.com/old-page.html✅ Yönlendirme Zincirlerinden Kaçının
Yönlendirme zinciri, URL A’nın URL B’ye yönlendirilmesi ve URL B’nin URL C’ye yönlendirilmesi durumunda oluşur. Her atlama gecikme ekler ve zincir boyunca aktarılan SEO değerini azaltır. Her zaman doğrudan son 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
Yönlendirme döngüsü, URL A’nın URL B’ye yönlendirilmesi ve URL B’nin geri URL A’ya yönlendirilmesi durumunda oluşur. Bu, tarayıcı hatasına neden olur ve sayfayı erişilemez hale getirir. Dağıtmadan önce her zaman yönlendirme mantığınızı doğrulayın.
✅ .htaccess Dosyasını Hafif Tutun
Sunucunuza yapılan her istek, Apache’nin .htaccess dosyasını okumasına neden olur. Düzinelerce gereksiz kuralla şişirilmiş bir dosya sunucunuzu yavaşlatabilir. Yalnızca aktif olarak ihtiyaç duyduğunuz kuralları tutun.
✅ 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 gereksinimi ve doğrulanmış bir Google sıralama faktörüdür. AlexHost, etki alanlarınız arasında hızlı bir şekilde dağıtılabilen SSL Sertifikaları sunmaktadır.
✅ Google Search Console’da Yönlendirmeleri İzleyin
Yönlendirmeleri uyguladıktan sonra — özellikle bir etki alanı geçişinden sonra — Google Search Console’un Kapsam ve URL İncelemesi raporlarını izleyerek Google’ın yeni URL’lerinizi doğru şekilde dizine alıp almadığını kontrol edin.
7. Yaygın Yönlendirme Sorunlarını Giderme
500 Internal Server Error
Neden: .htaccess içinde söz dizimi hatası
Çözüm: .htaccess söz dizimini dikkatle gözden geçirin. Eksik bir boşluk veya parantez bile bu hataya neden olabilir. Yedeklerinizi geri yükleyin ve değişiklikleri birer birer yeniden uygulayın.
Yönlendirme Çalışmıyor
Neden: mod_rewrite etkinleştirilmemiş olabilir veya AllowOverride değeri All olarak ayarlanmamış olabilir
Çözüm: mod_rewrite etkinleştirildiğinden emin olun (Ubuntu/Debian’da a2enmod rewrite) ve AllowOverride All değeri Apache sanal host yapılandırmanızda ayarlandığından emin olun.
Yönlendirme Döngüsü (ERR_TOO_MANY_REDIRECTS)
Neden: İki veya daha fazla yönlendirme kuralı birbirini gösteriyor
Çözüm: Kurallarınızı dikkatle gözden geçirin. HTTPS yönlendirmeleri için RewriteCond değerinin %{HTTPS} durumunu doğru şekilde kontrol ettiğinden emin olun. Bazı sunucu ortamları (örneğin, yük dengeleyicinin arkasında) %{HTTP:X-Forwarded-Proto} kontrolünü gerektirebilir.
Yönlendirme Sorgu Dizelerini Yanlış Geçiriyor
Neden: Sorgu dizeleri beklendiği gibi işlenmiyor
Çözüm: %{QUERY_STRING} kullanın RewriteCond içinde 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şında nokta ve dosya uzantısı olmadan) olarak adlandırıldığından ve doğru dizine yerleştirildiğinden emin olun.
8. Sonuç
.htaccess yönlendirmelerinde uzmanlaşmak, Apache tabanlı barındırma ortamlarında çalışan herhangi bir web geliştirici, SEO profesyoneli veya sistem yöneticisi için gerekli bir beceridir. Tek bir sayfayı yönlendiriyor olsanız, tüm bir etki alanını taşıyor olsanız, HTTPS’yi zorunlu kılıyor olsanız veya kanonik URL’lerinizi birleştiriyor olsanız, .htaccess dosyası, global sunucu yapılandırma dosyalarına erişim gerektirmeden tüm bunları işlemek için güçlü ve esnek bir mekanizma sağlar.
Ana çıkarımlar:
- 301 yönlendirmelerini kullanın SEO değerini korumak için kalıcı taşımalar için
- 302 yönlendirmelerini kullanın yalnızca gerçekten geçici durumlar için
- Her zaman yedek alın
.htaccessdosyasının düzenlemeden önce - Yönlendirme zincirlerinden ve döngülerinden kaçının performans ve SEO bütünlüğünü korumak için
- Her yönlendirmeyi test edin uygulamadan sonra güvenilir araçlar kullanarak
Barındırma ortamınızın kalitesi, yönlendirmelerin ne kadar etkili bir şekilde çalıştığında önemli bir rol oynar. Hızlı, iyi yapılandırılmış bir sunucu, yönlendirme işlemesinin kullanıcılarınızın deneyimine minimal gecikme eklemesini sağlar. Tam Apache kontrolü ile esnek bir VPS Hosting ortamına ihtiyacınız olsun, yüksek trafikli web siteleri için güçlü bir Dedicated Server‘a ihtiyacınız olsun veya .htaccess desteği yerleşik olan yönetimi kolay bir Shared Web Hosting planına ihtiyacınız olsun, AlexHost ihtiyaçlarınızı desteklemek için altyapıya sahiptir.
Birden fazla web sitesi veya etki alanını yönetiyorsanız, tüm web altyapınızı bir güvenilir platform altında kolaylaştırmak için barındırmanızı AlexHost aracılığıyla Domain Registration ile eşleştirmeyi düşünün.
Bu kılavuzda ele alınan teknikleri uygulayarak, ziyaretçilerinizin her zaman doğru sayfaya iniş yaptığından, arama motoru sıralamalarınızın her site değişikliğinde korunduğundan ve sunucunuzun gereksiz yönlendirme yükü olmadan verimli bir şekilde çalıştığından emin olacaksınız.
tasarruf edin