WordPress .htaccess dosyası ile belirli ülkelerin girişini engelleme, yani geo-blocking, web sitenize seçtiğiniz ülkelerden gelen trafiği sunucu seviyesinde reddetme işlemidir. Bunu yapmak için genellikle Apache veya LiteSpeed üzerinde çalışan .htaccess kurallarından, GeoIP/MaxMind veritabanından, IP blok listelerinden ya da CDN/WAF servislerinden yararlanılır. Ama önemli nokta şudur: .htaccess dosyası tek başına bir ziyaretçinin ülkesini bilmez; ülke bazlı engelleme yapabilmesi için sunucunun ülke bilgisini bir değişken olarak sağlaması veya ilgili ülkeye ait IP aralıklarının kurallara eklenmesi gerekir.
Bu rehberde WordPress sitelerde .htaccess ile ülke engellemenin nasıl çalıştığını, hangi durumlarda mantıklı olduğunu, örnek kuralları, güvenli uygulama adımlarını ve sık yapılan hataları ele alacağız. Amaç yalnızca bir kod parçası vermek değil; canlı sitede 500 hatası, SEO kaybı, ödeme/entegrasyon kesintisi veya yanlışlıkla Googlebot engelleme gibi riskleri azaltacak uygulanabilir bir süreç sunmaktır. Eğer WordPress sitenizi Hostragons üzerinde barındırıyorsanız, işlem öncesi hosting panelinizden dosya yedeği almanız ve değişiklikleri kademeli uygulamanız önerilir WordPress Hosting.
Geo-Blocking Nedir ve WordPress Sitelerde Ne İşe Yarar?
Geo-blocking, ziyaretçilerin coğrafi konumuna göre erişimi sınırlama yöntemidir. Konum genellikle ziyaretçinin IP adresinden tahmin edilir. Örneğin yalnızca Türkiye’ye satış yapan bir e-ticaret sitesi, hedef pazarı dışında kalan ülkelerden yoğun sahte üyelik, spam yorum veya brute-force denemesi alıyorsa belirli ülkelere erişim kısıtı uygulayabilir.
WordPress özelinde bu işlem farklı amaçlarla kullanılabilir:
- Yönetim paneline yapılan kötü niyetli giriş denemelerini azaltmak.
- Spam yorum, bot kayıtları ve sahte form gönderimlerini düşürmek.
- Belirli lisans, yayın hakkı veya yasal gereklilikler nedeniyle erişimi sınırlandırmak.
- Sunucu kaynaklarını hedef pazar dışı trafikten korumak.
- Ödeme, kargo veya hizmet verilmeyen bölgelerden gelen gereksiz talepleri azaltmak.
Bununla birlikte geo-blocking bir güvenlik duvarının yerini tamamen almaz. IP konumu hatalı tahmin edilebilir, VPN veya proxy ile aşılabilir ve bazı meşru kullanıcılar yanlışlıkla engellenebilir. Bu yüzden ülke engelleme; güçlü parola, iki faktörlü kimlik doğrulama, güncel WordPress çekirdeği, güvenli eklentiler, SSL sertifikası ve düzenli yedekleme gibi temel önlemlerle birlikte düşünülmelidir SSL Sertifikası.
.htaccess Dosyası Ülke Bilgisini Nasıl Kullanır?
.htaccess, Apache ve LiteSpeed tabanlı sunucularda dizin düzeyinde yapılandırma yapmaya yarayan güçlü bir dosyadır. WordPress kalıcı bağlantı yapısı, yönlendirmeler, önbellek kuralları, dosya erişim izinleri ve bazı güvenlik kısıtlamaları bu dosya üzerinden yönetilebilir. Ancak .htaccess bir IP adresinin hangi ülkeden geldiğini varsayılan olarak çözümlemez.
Ülke bazlı engelleme için üç temel yaklaşım vardır:
- Sunucuda GeoIP veya MaxMind modülü aktifse ülke kodu değişkeni üzerinden kural yazmak.
- Engellenecek ülkelere ait IP aralıklarını .htaccess dosyasına eklemek.
- Ülke engellemeyi CDN/WAF veya güvenlik eklentisiyle yapıp .htaccess dosyasını destekleyici amaçla kullanmak.
2026 itibarıyla en sağlıklı yöntem çoğu senaryoda CDN/WAF veya sunucu düzeyinde MaxMind tabanlı çözümdür. Çünkü ülke IP blokları sık değişir; binlerce satırlık .htaccess kuralı performansı düşürebilir. Yine de küçük ve kontrollü engellemelerde .htaccess pratik bir araçtır.
İşleme Başlamadan Önce Mutlaka Yapılması Gerekenler
.htaccess dosyası yanlış düzenlendiğinde siteniz tamamen erişilemez hale gelebilir. En sık görülen sonuçlar 500 Internal Server Error, yönlendirme döngüsü, wp-admin erişim problemi ve beklenmeyen 403 Forbidden hatalarıdır. Bu nedenle canlı sitede değişiklik yapmadan önce aşağıdaki kontrol listesini uygulayın:
- Mevcut .htaccess dosyasını bilgisayarınıza indirin ve tarihli bir yedek oluşturun.
- WordPress dosya ve veritabanı yedeği alın Web Sitesi Yedekleme.
- Hosting panelinizde dosya yöneticisi veya FTP erişiminizin çalıştığını doğrulayın.
- Önce tek bir test kuralı deneyin; çok sayıda IP veya ülke kuralını aynı anda eklemeyin.
- Googlebot, ödeme sağlayıcıları, kargo entegrasyonları, API servisleri ve CDN IP aralıklarının etkilenmediğini kontrol edin.
- Değişiklik sonrası erişimi farklı ağlardan test edin; yalnızca kendi tarayıcınızla kontrol etmek yeterli değildir.
Pratik deneyimde, hataların büyük bölümü kuralın yanlış konuma eklenmesinden kaynaklanır. WordPress’in kendi rewrite kuralları genellikle BEGIN WordPress ve END WordPress satırları arasında bulunur. Elle eklediğiniz güvenlik kurallarını çoğu durumda bu bloğun üstüne yerleştirmek daha güvenlidir. Çünkü WordPress kalıcı bağlantı ayarları kaydedildiğinde kendi bloğunu yeniden oluşturabilir.
Yöntem 1: GeoIP veya MaxMind Değişkeni ile .htaccess Ülke Engelleme
Sunucunuz ülke kodunu bir ortam değişkeni olarak sağlıyorsa .htaccess içinde bu değişkene göre erişim kısıtlayabilirsiniz. Eski kurulumlarda mod_geoip, daha modern kurulumlarda MaxMind GeoLite2 ve mod_maxminddb benzeri çözümler kullanılabilir. Değişken adı sunucu yapılandırmasına göre farklılık gösterebilir; yaygın örnekler GEOIP_COUNTRY_CODE, MM_COUNTRY_CODE veya GEOIP_COUNTRY_CODE_V6 şeklindedir.
Örnek mantık
Aşağıdaki örnek, sunucuda GEOIP_COUNTRY_CODE değişkeninin üretildiği varsayımıyla belirli ülke kodlarını engelleme mantığını gösterir. Kod örneğini doğrudan kopyalamadan önce hosting sağlayıcınızda hangi değişkenin desteklendiğini kontrol etmelisiniz.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(RU|CN|KP)$
RewriteRule ^ - [F,L]
</IfModule>
Bu örnekte RU, CN ve KP ülke kodlarından gelen istekler 403 Forbidden yanıtı alır. Ülke kodları ISO 3166-1 alpha-2 standardındadır. Örneğin Türkiye için TR, Almanya için DE, Amerika Birleşik Devletleri için US kullanılır. Engellemek istediğiniz ülkeleri dikey çizgi ile ayırabilirsiniz.
Yalnızca wp-login.php için ülke engelleme
Tüm siteyi kapatmak yerine sadece WordPress giriş sayfasını hedeflemek çoğu işletme için daha dengeli bir yaklaşımdır. Örneğin siteniz global olarak okunabilir olsun, fakat wp-login.php sadece belirli bölgelerden erişilebilir olsun isteyebilirsiniz.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-login\.php$ [NC]
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(RU|CN)$
RewriteRule ^ - [F,L]
</IfModule>
Bu yapı, içerik sayfalarınızın erişilebilirliğini korurken yönetim giriş yüzeyini daraltır. Özellikle brute-force saldırılarının büyük kısmı wp-login.php ve xmlrpc.php dosyalarına yöneldiği için, güvenlik etkisi kaynak kullanımına göre oldukça yüksektir.
Yöntem 2: Ülke IP Aralıklarını .htaccess ile Engelleme
Sunucuda GeoIP değişkeni yoksa teorik olarak belirli ülkelere ait IP bloklarını .htaccess dosyasına ekleyebilirsiniz. Fakat bu yöntemin bakım maliyeti yüksektir. Büyük ülkeler için binlerce CIDR bloğu bulunabilir ve bunları .htaccess içinde yönetmek performansı olumsuz etkileyebilir. Ayrıca IP tahsisleri değiştiği için listeyi düzenli güncellemek gerekir.
Apache 2.4 ve üzeri sürümlerde IP engelleme için Require not ip yapısı kullanılabilir. Örnek:
<RequireAll>
Require all granted
Require not ip 203.0.113.0/24
Require not ip 198.51.100.0/24
</RequireAll>
Buradaki IP aralıkları dokümantasyon örneğidir; gerçek ülke listesi değildir. Gerçek listeleri kullanırken güvenilir ve güncel kaynaklardan alınan CIDR verilerini tercih etmelisiniz. Ancak 500, 1000 veya daha fazla satırlık IP kuralı eklemeniz gerekiyorsa bu işi .htaccess yerine sunucu güvenlik duvarı, WAF veya CDN katmanına taşımak daha doğrudur.
Yöntem 3: CDN veya WAF ile Geo-Blocking, .htaccess ile Destekleme
Modern WordPress güvenlik mimarisinde ülke engelleme için en ölçeklenebilir yöntem genellikle CDN veya WAF kullanmaktır. Cloudflare, Sucuri, LiteSpeed Web ADC, Imunify360 gibi çözümler ülke bazlı kuralları daha hızlı ve merkezi şekilde uygulayabilir. Bu sistemler isteği web sunucunuza ulaşmadan önce filtrelediği için CPU, RAM ve PHP işlem yükünü azaltır.
.htaccess burada tamamen gereksiz değildir. Örneğin CDN üzerinden gelen gerçek istemci IP’sini doğru almak, belirli hassas dosyaları kapatmak veya WordPress giriş URL’sine ek kısıt koymak için .htaccess kullanılabilir. Fakat ana geo-blocking yükünü CDN’e vermek, yüksek trafikli sitelerde daha sürdürülebilirdir.
Yöntemlerin Karşılaştırması
| Yöntem | Avantaj | Dezavantaj | Kimler İçin Uygun? |
|---|---|---|---|
| GeoIP değişkeni ile .htaccess | Sunucu seviyesinde hızlı kural yazılabilir; WordPress eklentisine bağlı değildir. | Sunucuda GeoIP/MaxMind desteği gerekir; değişken adı sağlayıcıya göre değişebilir. | Apache/LiteSpeed kullanan ve teknik kontrol isteyen siteler. |
| IP aralıkları ile .htaccess | Ek modül gerekmeden çalışabilir; küçük IP listelerinde pratiktir. | Büyük listelerde performans ve bakım sorunu oluşturur. | Az sayıda IP bloğu engellemek isteyenler. |
| CDN/WAF geo-blocking | İstek sunucuya ulaşmadan filtrelenir; yönetimi kolaydır; raporlama sunar. | Ek servis yapılandırması gerektirir; yanlış ayarda gerçek kullanıcı etkilenebilir. | Trafiği yüksek, güvenlik öncelikli ve ölçeklenebilir çözüm arayan siteler. |
| WordPress güvenlik eklentisi | Panelden yönetilebilir; teknik bilgi ihtiyacı düşüktür. | PHP çalıştıktan sonra devreye girebilir; kaynak tüketimi daha yüksek olabilir. | Kod düzenlemek istemeyen küçük ve orta ölçekli siteler. |
Adım Adım: WordPress .htaccess ile Güvenli Geo-Blocking Uygulaması

1. Engelleme hedefinizi netleştirin
Önce tüm siteyi mi, sadece wp-login.php dosyasını mı, yoksa xmlrpc.php gibi belirli uç noktaları mı koruyacağınızı belirleyin. Tüm siteyi ülke bazında kapatmak SEO, marka erişimi ve müşteri deneyimi açısından daha risklidir. Sadece yönetim veya saldırı alanlarını kapatmak çoğu zaman daha iyi sonuç verir.
2. Trafik verinizi analiz edin
Karar vermeden önce en az 7-14 günlük erişim loglarını, güvenlik eklentisi kayıtlarını ve Analytics verilerini inceleyin. Örneğin toplam trafiğin yüzde 3’ünü oluşturan bir ülkeden saldırıların yüzde 60’ı geliyorsa kısıtlama mantıklı olabilir. Fakat organik satışların yüzde 12’si aynı ülkeden geliyorsa tüm ülkeyi kapatmak gelir kaybına neden olabilir.
3. Sunucu desteğini kontrol edin
Hosting ortamınızda Apache mi, LiteSpeed mi, Nginx mi kullanıldığını öğrenin. .htaccess Apache ve LiteSpeed’de çalışır; Nginx’te aynı dosya doğrudan kullanılmaz. Hostragons üzerinde uygun hosting paketini seçerken WordPress uyumluluğu, yedekleme, SSL ve güvenlik özelliklerini birlikte değerlendirmeniz önemlidir Web Hosting.
4. Test kuralını ekleyin
Önce tek ülke veya tek IP bloğu için test yapın. Kuralı .htaccess dosyanızda WordPress bloğunun üstüne ekleyin. Kaydettikten sonra sitenin ana sayfasını, wp-admin panelini, ürün sayfalarını, form gönderimlerini ve ödeme akışını kontrol edin.
5. Günlükleri izleyin
403 yanıtlarının sayısını ve kaynaklarını izleyin. Beklenenden fazla 403 görüyorsanız kural kapsamı geniş olabilir. Özellikle CDN arkasında çalışıyorsanız web sunucunuz gerçek ziyaretçi IP’si yerine CDN IP’sini görüyor olabilir. Bu durumda ülke tespiti hatalı çalışabilir.
6. Kuralı belgeleyin
.htaccess içine açıklama satırları ekleyin. Hangi ülkenin neden engellendiğini, kuralın ne zaman eklendiğini ve kimin onayladığını belirtmek, ileride bakım yapan ekip için kritik öneme sahiptir. Örneğin: # 2026-02-15: wp-login saldırıları nedeniyle RU ve CN için giriş kısıtı.
SEO Açısından Dikkat Edilmesi Gerekenler
Geo-blocking SEO üzerinde doğrudan etki oluşturabilir. Googlebot genellikle ABD merkezli IP’lerden tarama yapar. Eğer US gibi ülkeleri tüm site genelinde engellerseniz, Google sayfalarınızı taramakta zorlanabilir. Bu durum indeks kaybı, sıralama düşüşü ve Search Console’da erişim hataları olarak geri dönebilir.
SEO güvenliği için şu noktalara dikkat edin:
- Googlebot, Bingbot ve diğer önemli arama motoru botlarını yanlışlıkla engellemediğinizden emin olun.
- Uluslararası hedeflemeniz varsa hreflang, canonical ve yönlendirme kurallarını test edin.
- 403 sayfalarının kullanıcıya açıklayıcı bir mesaj vermesini sağlayın; boş hata ekranı güven kaybı yaratır.
- Search Console Kapsam, Tarama İstatistikleri ve Sayfa Deneyimi raporlarını değişiklik sonrası izleyin.
- Ülke engellemeyi SEO amaçlı gizleme veya farklı içerik sunma için kullanmayın; bu cloaking riskine yaklaşabilir.
Özellikle global içerik üreten bloglar, SaaS siteleri, turizm işletmeleri ve ihracat hedefli markalar için tüm ülke engelleme kararı dikkatli verilmelidir. Eğer yalnızca spam formları azaltmak istiyorsanız reCAPTCHA, rate limiting, güvenlik eklentisi veya WAF kuralı daha az riskli olabilir.
Güvenlikte Geo-Blocking Tek Başına Yeterli mi?
Hayır. Geo-blocking saldırı yüzeyini azaltır ama saldırganları tamamen durdurmaz. VPN, proxy, botnet ve bulut sunucu IP’leriyle ülke kısıtlaması aşılabilir. Bu yüzden WordPress güvenliğinde katmanlı yaklaşım gerekir. En azından şu önlemleri birlikte uygulayın:
- WordPress çekirdeğini, tema ve eklentileri düzenli güncelleyin.
- Yönetici hesabında benzersiz kullanıcı adı ve güçlü parola kullanın.
- İki faktörlü kimlik doğrulama etkinleştirin.
- wp-login.php ve xmlrpc.php istekleri için rate limiting uygulayın.
- Gereksiz eklentileri kaldırın ve bilinmeyen kaynaklardan tema kullanmayın.
- SSL sertifikası ile tüm trafiği HTTPS üzerinden sunun SSL Sertifikası.
- Düzenli yedekleme ve geri dönüş planı oluşturun.
İyi yapılandırılmış bir hosting altyapısı da bu sürecin temelidir. Kaynak izolasyonu, güncel PHP sürümü, kötü amaçlı yazılım taraması, otomatik yedekleme ve hızlı destek gibi unsurlar WordPress güvenliğini doğrudan etkiler Güvenli WordPress Hosting.
Sık Yapılan Hatalar ve Çözümleri
Hata 1: .htaccess dosyasına çok büyük IP listesi eklemek
Binlerce satırlık IP kuralı her istekte işleneceği için performansı düşürebilir. Çözüm olarak büyük ülke listelerini CDN/WAF veya sunucu güvenlik duvarı seviyesinde yönetin.
Hata 2: Googlebot ve entegrasyon servislerini engellemek
Ödeme sağlayıcıları, e-posta servisleri, kargo API’leri ve arama motoru botları farklı ülkelerden istek gönderebilir. Değişiklikten sonra logları kontrol edin ve kritik servisleri beyaz listeye alın.
Hata 3: Nginx sunucuda .htaccess beklemek
Nginx .htaccess dosyasını okumaz. Eğer sunucunuz Nginx ise eşdeğer kurallar Nginx konfigürasyon dosyalarına yazılmalıdır. Paylaşımlı hostingte bu erişim olmayabilir; bu durumda CDN veya güvenlik eklentisi daha uygun olabilir.
Hata 4: Yedek almadan canlı dosyayı düzenlemek
Tek bir karakter hatası bile siteyi erişilemez yapabilir. Yedek yoksa kurtarma süresi uzar. Dosya yöneticisinden düzenleme yapıyorsanız kaydetmeden önce mevcut içeriği güvenli bir metin dosyasına kopyalayın.
Hata 5: Engelleme kararını veriye dayandırmamak
Sadece varsayımla ülke engellemek müşteri kaybına yol açabilir. Önce log, güvenlik raporu ve dönüşüm verilerini inceleyin. Gerektiğinde tüm ülke yerine yalnızca wp-login.php veya belirli form uç noktalarını kısıtlayın.
Alternatifler: Eklenti, Güvenlik Duvarı ve Sunucu Seviyesi Çözümler
Kod düzenlemek istemiyorsanız WordPress güvenlik eklentileri ülke engelleme özelliği sunabilir. Ancak eklenti tabanlı çözümler çoğunlukla WordPress ve PHP çalıştıktan sonra devreye girdiği için, yoğun bot trafiğinde sunucu kaynaklarını .htaccess veya WAF kadar erken korumayabilir. Yine de küçük siteler için yönetim kolaylığı sağlar.
Sunucu seviyesinde CSF, firewalld, iptables veya sağlayıcı paneli üzerinden IP/CIDR engelleme yapılabilir. Bu yöntem .htaccess’ten daha erken aşamada çalışır. Fakat paylaşımlı hosting kullanıcılarının genellikle bu katmana erişimi yoktur. Bu durumda Hostragons destek ekibiyle ihtiyaçlarınıza uygun güvenlik yaklaşımını değerlendirebilir veya yönetilebilir hosting çözümlerini inceleyebilirsiniz Hosting Paketleri.
Uygulama Sonrası Kontrol Listesi
Geo-blocking kuralını ekledikten sonra aşağıdaki kontrolleri tamamlamadan işlemi bitmiş saymayın:
- Ana sayfa, kategori, yazı, ürün ve sepet sayfalarını test edin.
- wp-admin ve wp-login.php erişimini yetkili ülkelerden doğrulayın.
- İletişim formu, üyelik formu ve ödeme adımlarını deneyin.
- Search Console canlı URL testi yapın.
- Sunucu hata loglarında 500 veya beklenmeyen 403 artışı olup olmadığını inceleyin.
- CDN kullanıyorsanız önbelleği temizleyin ve gerçek IP aktarımını kontrol edin.
- Kuralın amacını ve tarihini ekip dokümantasyonuna ekleyin.
Bu kontroller, özellikle gelir üreten WordPress sitelerinde kritik öneme sahiptir. Basit görünen bir ülke engelleme kuralı; ödeme dönüşümünü, reklam kalite puanını, e-posta doğrulama servislerini veya API entegrasyonlarını etkileyebilir API ve Entegrasyonlar.
Sıkça Sorulan Sorular
WordPress .htaccess dosyası ile belirli ülkelerin girişini engelleme mümkün mü?
Evet, mümkündür; ancak .htaccess dosyasının ülke bilgisiyle çalışabilmesi için sunucuda GeoIP/MaxMind değişkeni bulunmalı veya ülkeye ait IP aralıkları kurallara eklenmelidir. Tek başına .htaccess, IP adresinin ülkesini otomatik bilmez.
.htaccess ile ülke engelleme SEO’ya zarar verir mi?
Yanlış yapılandırılırsa zarar verebilir. Özellikle Googlebot’un eriştiği ülkeleri veya CDN IP’lerini engellemek tarama sorunlarına yol açabilir. Tüm siteyi kapatmak yerine yalnızca wp-login.php gibi hassas uç noktaları kısıtlamak daha güvenli olabilir.
Hangi ülke kodlarını kullanmalıyım?
Genellikle ISO 3166-1 alpha-2 ülke kodları kullanılır. Türkiye için TR, Almanya için DE, ABD için US, Fransa için FR örnektir. Kullanılacak değişken ve ülke kodu formatı sunucu GeoIP yapılandırmasına göre doğrulanmalıdır.
Nginx sunucuda .htaccess ile geo-blocking yapılır mı?
Hayır. Nginx .htaccess dosyasını okumaz. Nginx’te ülke engelleme için sunucu konfigürasyonu, map/geo modülleri, WAF, CDN veya WordPress güvenlik eklentisi gibi alternatifler kullanılmalıdır.
Geo-blocking VPN kullanan saldırganları durdurur mu?
Tamamen durdurmaz. VPN, proxy ve botnet kullanan saldırganlar farklı ülkelerden görünebilir. Geo-blocking saldırı hacmini azaltan ek bir katmandır; iki faktörlü giriş, WAF, güncelleme, güçlü parola ve yedekleme ile birlikte kullanılmalıdır.
Kısa Özet ve Sonraki Adım
WordPress .htaccess dosyası ile belirli ülkelerin girişini engelleme, doğru yapılandırıldığında spam, brute-force ve gereksiz trafik yükünü azaltabilir. En güvenli yaklaşım; önce veriyi analiz etmek, yalnızca gerekli alanları kısıtlamak, yedek almak, test etmek ve logları izlemektir. Büyük ölçekli ülke engelleme ihtiyaçlarında CDN/WAF veya sunucu seviyesi çözümler genellikle daha performanslıdır. WordPress siteniz için güvenli, hızlı ve sürdürülebilir bir altyapı arıyorsanız Hostragons’un hosting, domain ve SSL çözümlerini inceleyebilir; ihtiyacınıza uygun yapılandırmayı sakin bir planla hayata geçirebilirsiniz Domain Sorgulama WordPress Hosting.