.htaccess Nedir

Aralık 22, 2025

Uludağ Web

Dijital pazarlama dünyasında içerik kral olabilir, ancak o kralın oturduğu taht teknik altyapıdır. Bir web sitesinin Google botları (Crawlers) ve kullanıcılarla olan ilk etkileşimi, henüz sitenin tasarımı yüklenmeden, sunucu seviyesinde başlar. İşte bu noktada karşımıza, Apache sunucularının yönetim anahtarı olan .htaccess (Hypertext Access) dosyası çıkar.

Çoğu web yöneticisi ve amatör SEO ilgilisi, bu dosyayı sadece “WordPress kalıcı bağlantılarını düzelten dosya” olarak tanır. Oysa .htaccess; tarama bütçesi optimizasyonundan site hızı artışına, güvenlik önlemlerinden link otoritesi (Link Juice) yönetimine kadar SEO’nun en kritik metriklerini doğrudan kontrol edebileceğiniz bir komuta merkezidir.

Bu makalede, bir Teknik SEO Uzmanı perspektifiyle, .htaccess dosyasını kullanarak Google sıralamalarınızı nasıl iyileştirebileceğinizi, sunucu yanıt sürelerini (TTFB) nasıl düşüreceğinizi ve indeksleme sorunlarını kökten nasıl çözeceğinizi derinlemesine inceleyeceğiz.

.htaccess ve İleri Düzey SEO

.htaccess, Apache Web Sunucusu üzerinde çalışan web sitelerinde, dizin düzeyinde yapılandırma değişiklikleri yapmaya yarayan bir ayar dosyasıdır. Bu dosya, sunucunun ana konfigürasyon dosyalarına erişiminiz olmadığında (paylaşımlı hosting gibi durumlarda) sunucu davranışlarını değiştirmenizi sağlar.

SEO Açısından Kritik Önemi:

Google algoritmaları (Core Web Vitals, Helpful Content Update vb.), kullanıcı deneyimini ve erişilebilirliği merkeze alır. .htaccess dosyası ile yaptığınız her değişiklik, tarayıcıya ve Google botuna “Bu siteye nasıl davranmalısın?” sorusunun cevabını verir.

  • Sunucu Yanıt Süresi: Önbellekleme ve sıkıştırma komutlarıyla site hızını artırır.
  • İndeksleme Kontrolü: Hangi sayfaların otorite aktaracağını belirler.
  • Kullanıcı Deneyimi: Hatalı sayfaları doğru yönlendirerek (301) kullanıcının sitede kalmasını sağlar.

Başlamadan Önce: Altın Güvenlik Kuralları (E-E-A-T)

Sunucu dosyalarıyla oynamak, açık kalp ameliyatı yapmak gibidir. Tek bir noktalı virgül hatası, tüm sitenizin “500 Internal Server Error” vermesine ve erişimin tamamen kesilmesine neden olabilir.

  • Mutlaka Yedek Alın: İşleme başlamadan önce mevcut .htaccess dosyanızı bilgisayarınıza indirin ve adını .htaccess_yedek olarak değiştirip saklayın.
  • ASCII Modu: FTP programı (FileZilla vb.) kullanıyorsanız dosya transfer türünün “ASCII” olduğundan emin olun.
  • Gizli Dosyalar: .htaccess başındaki nokta (.) nedeniyle gizli bir dosyadır. FTP programınızda “Gizli dosyaları göster” seçeneğini aktif etmelisiniz.

SEO Dostu URL Yapısı ve Kanonikleşme (Canonicalization)

SEO’nun en büyük düşmanlarından biri Yinelenen İçerik (Duplicate Content) sorunudur. Google gözünde www.site.com, site.com, http://site.com ve https://site.com teknik olarak 4 farklı sitedir. Eğer bunları tek bir versiyona zorlamazsanız, otoriteniz 4’e bölünür.

WWW ve Non-WWW Yönlendirmesi

Sitenizin tek bir versiyonunu seçin (tercihen kısa olduğu için non-www) ve diğerini ona yönlendirin.

WWW’den WWW Olmayana (Non-WWW) Yönlendirme:

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

WWW Olmayandan WWW’liye Yönlendirme:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^siteniz.com [NC]
RewriteRule ^(.*)$ https://www.siteniz.com/$1 [L,R=301]
  • RewriteEngine On: Yeniden yazma modülünü başlatır.
  • [NC]: (No Case) Büyük/küçük harf duyarsızdır.
  • R=301: Kalıcı yönlendirme (SEO gücünü aktarır).

HTTP’den HTTPS’e Zorlama (SSL Yönlendirmesi)

HTTPS, Google için onaylanmış bir sıralama faktörüdür ve güven sinyalidir. Kullanıcı http:// yazsa bile zorla güvenli versiyona göndermelisiniz.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Trailing Slash (Sondaki Eğik Çizgi) Sorunu

site.com/sayfa ile site.com/sayfa/ Google için iki farklı URL’dir. Genellikle klasör yapısını simgelediği için sonda slash (/) olması tercih edilir.

Sona Slash Ekleme Kodu:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ https://siteniz.com/$1/ [L,R=301]

İleri Düzey 301 Yönlendirme Teknikleri

Site taşıma, URL yapısı değiştirme veya silinen ürün sayfaları için 301 (Permanent Redirect) kullanımı hayati önem taşır. Bu, Google’a “Bu içerik artık burada değil, şuraya taşındı, lütfen eski sayfanın kazandığı tüm backlink ve otorite puanlarını yeni sayfaya aktar” demektir.

Tekil Sayfa Yönlendirme

Eski bir blog yazısını güncellediyseniz veya URL yapısını değiştirdiyseniz:

Redirect 301 /eski-sayfa.html /yeni-guncel-sayfa.html

Tüm Dizin (Kategori) Değişikliği

Eğer /blog/ kategorisini /makaleler/ olarak değiştirdiyseniz, yüzlerce yazıyı tek tek yazmanıza gerek yoktur. Regex (Düzenli İfadeler) burada devreye girer.

RewriteRule ^blog/(.*)$ /makaleler/$1 [R=301,NC,L]
  • ^blog/(.*)$: “blog/” ile başlayan ve sonrasında ne gelirse gelsin (.*) yakala.
  • /makaleler/$1: Yakaladığın kısmı ($1) “makaleler/” dizininin sonuna ekle.

Dosya Uzantısını Değiştirme (URL Temizleme)

.php veya .html uzantılı URL’ler eski moda görünür. Semantik SEO için temiz URL’ler (Clean URLs) daha iyidir.

.html Uzantısını Kaldırma:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]

Bu kod sayesinde kullanıcı site.com/hakkimizda adresine girdiğinde, sunucu arka planda hakkimizda.html dosyasını çalıştırır ama URL temiz kalır.

Site Hızı ve Core Web Vitals Optimizasyonu

Google’ın PageSpeed Insights aracında gördüğünüz “Sunucu yanıt süresini azaltın”, “Metin sıkıştırmayı etkinleştirin” veya “Tarayıcı önbellekleme kullanın” uyarılarının çözümü doğrudan .htaccess dosyasındadır.

GZIP Sıkıştırma (Mod_Deflate)

HTML, CSS ve JS dosyalarınızı sunucudan tarayıcıya gönderirken sıkıştırarak boyutlarını %70’e kadar küçültür. Bu, LCP (Largest Contentful Paint) skorunu doğrudan iyileştirir.

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/xml
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/json
  AddOutputFilterByType DEFLATE application/xml
</IfModule>

Tarayıcı Önbellekleme (Browser Caching – Expires Headers)

Ziyaretçiler sitenize tekrar girdiğinde logonuzu, CSS dosyalarınızı tekrar tekrar indirmemelidir. Bu kod, tarayıcıya “Bu dosyaları hafızanda tut” der.

<IfModule mod_expires.c>
  ExpiresActive On
  
  # Görseller - 1 Yıl
  ExpiresByType image/jpg "access plus 1 year"
  ExpiresByType image/jpeg "access plus 1 year"
  ExpiresByType image/gif "access plus 1 year"
  ExpiresByType image/png "access plus 1 year"
  ExpiresByType image/webp "access plus 1 year"
  
  # CSS ve JS - 1 Ay
  ExpiresByType text/css "access plus 1 month"
  ExpiresByType application/pdf "access plus 1 month"
  ExpiresByType text/javascript "access plus 1 month"
  ExpiresByType application/javascript "access plus 1 month"
  
  # HTML - Sürekli Güncel Kalmalı (0 saniye)
  ExpiresByType text/html "access plus 0 seconds"
</IfModule>

Güvenlik 1ve E-E-A-T Sinyalleri (Security Headers)

Güvenli bir site, Google nezdinde güvenilir bir sitedir. .htaccess ile ekleyeceğiniz HTTP Güvenlik Başlıkları, hem kullanıcıyı korur hem de SEO puanınıza katkı sağlar.

HSTS (HTTP Strict Transport Security)

Bu başlık, tarayıcılara sitenin sadece HTTPS üzerinden yüklenmesi gerektiğini, asla güvensiz bağlantı kurmamaları gerektiğini söyler. Man-in-the-Middle saldırılarını önler.

<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>

Clickjacking Koruması (X-Frame-Options)

Sitenizin başka sitelerde iframe içinde çalıştırılmasını engeller. İçeriğinizin çalınmasını ve arayüz hatalarını önler.2

<IfModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
</IfModule>

Hotlink Koruması (Bant Genişliği Hırsızlığı)3

Başka sitelerin sizin görselleri4nizi <img src="sizin-siteniz.com/resim.jpg"> şeklinde kullanarak bant genişliğinizi (ve sunucu kaynaklarınızı) tüketmesini engeller. Bu, sunucu performansını korur.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?siteniz.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp)$ - [NC,F,L]

(Not: https://www.google.com/search?q=Google.com’a izin vermelisiniz, aksi takdirde Google Görseller’de resimleriniz görünmez!)

Tarama Bütçesi (Crawl Budget) ve Bot Kontrolü

Büyük sitelerde (E-ticaret, Haber) Google botunun gereksiz sayfalarla vakit kaybetmesi, önemli sayfaların indekslenmesini geciktirir.

İstenmeyen Botları Engelleme

SEO araçlarının botları (Ahrefs, Semrush, MJ12bot vb.) sitenizi sürekli tarayarak sunucuyu yorar. Eğer bu araçları kullanmıyorsanız engelleyebilirsiniz.

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*(AhrefsBot|MJ12bot|SemrushBot|DotBot).*$ [NC]
RewriteRule .* - [F,L]
  • [F]: Forbidden (Yasakla – 403 Hatası Ver).

Özel 404 Hata Sayfası Tanımlama

Kırık linklere giren kullanıcılar, sunucunun standart beyaz hata sayfasını görürse hemen çıkar (Bounce Rate artar). Onlara özel tasarlanmış, site içinde tutacak bir 404 sayfası göstermek SEO dostudur.

Apache

ErrorDocument 404 /404-sayfasi.html
ErrorDocument 500 /500-hatasi.html

İleri Düzey Regex ile Query String (Parametre) Temizliği

Bazen URL’ler site.com/urun?id=123&ref=facebook gibi parametrelerle kirlenir. Bu parametreler yinelenen içerik yaratabilir.

Eğer /urun.php?id=123 şeklindeki URL’yi /urun-123 şeklinde temizlemek istiyorsanız:

Apache

RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule ^urun\.php$ /urun-%1? [R=301,L]

Sondaki ? işareti, yönlendirme yapılırken eski query string’in yeni URL’e yapışmasını engeller. Bu çok ince bir SEO tekniğidir.

.htaccess, SEO Stratejisinin Görünmez Kahramanıdır

SEO çalışmalarında içerik ve backlink görünen yüz ise, .htaccess bu sistemin sinir sistemidir. Doğru yapılandırılmış bir .htaccess dosyası;

  1. Hızı artırır (Core Web Vitals iyileşir).
  2. Güvenliği sağlar (HTTPS ve HSTS ile güven sinyalleri artar).
  3. Tarama bütçesini korur (Gereksiz botlar ve 404’ler engellenir).
  4. Otorite kaybını önler (301 ve Canonical yapısı ile).

Bu rehberdeki kodları sitenize uygularken, her zaman adım adım ilerleyin. Bir kodu ekleyin, siteyi test edin, sorun yoksa diğerine geçin. Unutmayın, teknik SEO’da mükemmellik, detayların toplamında gizlidir. Siz de bu teknikleri uygulayarak sunucu yanıt sürenizi (TTFB) milisaniyeler seviyesine düşürebilir, Google botlarına pürüzsüz bir tarama deneyimi sunabilir ve rekabette teknik üstünlüğü ele geçirebilirsiniz.

htaccess dosyası sitemde yok, nasıl oluştururum?

Bilgisayarınızda basit bir not defteri açın, içine kodları yapıştırın. Dosyayı kaydederken isim kısmına ".htaccess" (tırnak işaretleriyle beraber) yazın. Sonra FTP ile ana dizine (public_html) atın.

301 yönlendirmesi yaptım ama tarayıcıda hala eski siteye gidiyor?

Tarayıcılar 301 yönlendirmelerini önbelleğe alır (cache). Yönlendirmeyi test ederken mutlaka “Gizli Sekme” (Incognito) kullanın veya tarayıcı önbelleğinizi temizleyin.

Nginx sunucu kullanıyorum, .htaccess çalışmıyor?

Evet, .htaccess sadece Apache ve LiteSpeed sunucularda çalışır. Nginx sunucularda bu ayarların karşılığını nginx.conf dosyasına yazmanız gerekir, söz dizimi (syntax) tamamen farklıdır.

Çok fazla kod eklemek siteyi yavaşlatır mı?

Teorik olarak evet, sunucu her talepte bu dosyayı okur. Ancak makul seviyedeki (100-200 satır) kodlar milisaniyelik fark bile yaratmaz. Aksine, Gzip ve Cache kodları sitenizi hızlandıracağı için net kazanç her zaman pozitiftir.

Yaren

Uludağ Web'de profesyonel içerik üreticisi. WordPress, SEO ve dijital pazarlama üzerine araştırmalar yapıyor ve yazıyor. Teknoloji ile kelimeleri birleştirerek markaların dijital sesini güçlendiriyor.