Gelişmiş WordPress .htaccess Güvenlik rehberi

Gelişmiş WordPress .htaccess Rehberi: Sitenizi Bir Profesyonel Gibi Koruyun ve Yönlendirin

.htaccess dosyası, Apache web sunucunuzdaki en güçlü yapılandırma araçlarından biridir. Sadece birkaç satır kod ekleyerek web sitenizin SEO yönlendirme hatalarını düzeltebilir ve hackerlara karşı sitenizin etrafında adeta çelikten bir kale inşa edebilirsiniz.

Bu rehberimizde, WordPress siteleri için özel olarak optimize edilmiş, sunucunuzu yormayacak ve en üst düzey güvenlik katmanlarını içeren eksiksiz bir .htaccess şablonunu sizlerle paylaşıyoruz.

Neden Özel Bir .htaccess Dosyasına İhtiyacınız Var?

WordPress, kurulduğunda varsayılan olarak yalnızca kalıcı bağlantıları (URL yapısını) düzenleyen çok temel bir .htaccess dosyası oluşturur. Ancak bu dosyayı olduğu gibi bırakmak, sitenizi siber saldırılara açık hale getirmek ve kritik arama motoru optimizasyonu (SEO) fırsatlarını kaçırmak anlamına gelir.

Sizler için hazırladığımız bu optimize yapılandırma iki ana sütuna odaklanır: Kusursuz SEO Yönlendirmeleri ve Tarayıcı Seviyesinde Gelişmiş Güvenlik.

Aşağıdaki hazır kodu doğrudan kopyalayıp sitenizin kök dizininde bulunan .htaccess dosyasına güvenle yapıştırabilirsiniz:

# ======================================================================
# 1. YÖNLENDİRMELER (SEO & Temiz URL Yapısı)
# ======================================================================
RewriteEngine On

# WWW içeren istekleri temiz bir şekilde WWW'siz haline yönlendirir
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]

# Güvenli bağlantıyı (HTTPS) zorunlu kılar
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# ======================================================================
# 2. GELİŞMİŞ HTTP GÜVENLİK BAŞLIKLARI (Security Headers)
# ======================================================================
<IfModule mod_headers.c>
    # Siteler arası kod çalıştırma (XSS) saldırılarını engeller
    Header set X-XSS-Protection "1; mode=block"
    
    # Tıklama Avcılığı (Clickjacking) saldırılarını engeller (iframe koruması)
    Header set X-Frame-Options "SAMEORIGIN"
    
    # MIME Sniffing açıklarını kapatır (Görsel süsü verilmiş virüsleri engeller)
    Header set X-Content-Type-Options "nosniff"
    
    # Sitenin 1 yıl boyunca sadece HTTPS ile açılmasını zorunlu kılar (HSTS)
    Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    
    # Dış bağlantılara tıklayan ziyaretçilerin gizlilik verilerini korur
    Header set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>

# ======================================================================
# 3. ÇEKİRDEK SİSTEM VE DOSYA KORUMASI
# ======================================================================
# Sunucu imzasını ve yazılım sürümlerini dışarıya gizler
ServerSignature Off

# Klasör listelemeyi kapatır (Hackerların dosyalarınızı görmesini engeller)
Options -Indexes

# wp-config.php dosyasını (Veri tabanı şifrenizi) dış erişime kapatır
<Files wp-config.php>
    Order deny,allow
    Deny from all
</Files>

# .htaccess dosyasının kendisini dışarıdan okunmaya karşı korur
<Files .htaccess>
    Order allow,deny
    Deny from all
</Files>

# Şifre deneme (Brute Force) saldırılarını önlemek için XML-RPC'yi kapatır
<Files xmlrpc.php>
    Order deny,allow
    Deny from all
</Files>

# Varsayılan 403 hata sayfasına erişim izni verir
<Files 403.shtml>
    Order allow,deny
    Allow from all
</Files>

# wp-includes klasöründeki sistem dosyalarına doğrudan script erişimini engeller
<IfModule mod_rewrite.c>
    RewriteRule ^wp-admin/includes/ - [F,L]
    RewriteRule !^wp-includes/ - [S=3]
    RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
    RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
    RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

# Zararlı script enjeksiyonlarını filtreler (Gelişmiş XSS Kalkanı)
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

Öne Çıkan Güvenlik ve SEO Özelliklerinin Detayları

1. Tek Adımda Dinamik 301 Yönlendirmesi

Hatalı yazılan yönlendirme kuralları tarayıcılarda “Çok Fazla Yönlendirme Döngüsü” (Too Many Redirects) hatasına yol açar. Yukarıdaki kod, hem HTTPS hem de WWW temizleme işlemini tek bir hamlede yapar. Bu sayede Google botlarının tarama bütçesini (Crawl Budget) korur ve sitenizin arama sonuçlarında doğru URL ile indekslenmesini sağlar.

2. X-Content-Type-Options: “nosniff”

Bu başlık, sitelere gizlice sızdırılan default.php gibi tehlikeli backdoor (arka kapı) virüslerine karşı tam bir panzehirdir. Hackerlar genellikle zararlı PHP kodlarını bir görselin içine gizleyerek (default.jpg gibi) sitenize yükler. nosniff komutu, tarayıcının bu sahte dosyanın arkasındaki kodları çalıştırmasını (MIME Sniffing) kesin olarak engeller ve virüsü etkisiz hale getirir.

3. Strict-Transport-Security (HSTS)

HSTS, modern tarayıcılara sitenize sadece ve sadece güvenli HTTPS bağlantısı üzerinden erişilmesi talimatını verir. Güvensiz HTTP’den HTTPS’e geçiş esnasında oluşabilecek saliselik açık penceresini kapatarak “Ortadaki Adam” (Man-in-the-Middle) ve SSL şerit temizleme (SSL Strip) saldırılarını bloke eder.

Bu Kodlar Güvenli Bir Şekilde Nasıl Uygulanır?

  1. FTP istemciniz (FileZilla vb.) veya cPanel Dosya Yöneticisi üzerinden sitenizin sunucusuna bağlanın.

  2. WordPress’in kurulu olduğu ana dizindeki (root) .htaccess dosyasını bulun (Gizli dosyaları göster seçeneğinin açık olduğundan emin olun).

  3. Her ihtimale karşı mevcut .htaccess dosyanızın bir yedeğini bilgisayarınıza indirin.

  4. Dosyayı düzenleyin, içindeki eski yönlendirme satırlarını temizleyin, yukarıdaki kod bloğunu yapıştırın ve kaydedin.

  5. Sitenizi tarayıcınızın gizli sekmesinden açarak her şeyin sorunsuz çalıştığını test edin.

Scroll to Top