Web uygulamalarında bazen sadece belirli IP adreslerine erişim izni vermek ve diğer tüm istekleri farklı bir URL'ye yönlendirmek gerekebilir. Bu genellikle
bakım modları, geliştirme ortamları veya IP bazlı özel erişim kısıtlamaları için kullanılır. Apache web sunucusu üzerinde bu işlem .htaccess
dosyası içerisine yazılacak özel kurallarla kolayca sağlanabilir.
Kod Açıklaması
# IP adreslerini kontrol et
RewriteCond %{REMOTE_ADDR} !^31\.143\.234\.25$
RewriteCond %{REMOTE_ADDR} !^31\.143\.234\.23$
RewriteCond %{REMOTE_ADDR} !^88\.209\.248\.203$
# Farklı bir IP adresi ise yönlendirme yap
RewriteRule ^(.*)$ https://www.ekasunucu.com/iletisim [R=302,L]
Bu kural ne yapar?
-
RewriteCond
satırları, gelen isteğin IP adresini kontrol eder. -
Belirtilen IP adreslerinden değilse (
!
) yani listede yoksa, RewriteRule devreye girer. -
Gelen tüm istekleri
https://www.ekasunucu.com/iletisim
adresine 302 (geçici) yönlendirme ile yollar.
Kullanım Alanları
-
Sadece belirli geliştiricilere sitenin aktif versiyonunu gösterip, kalan tüm kullanıcıların iletişim sayfasına yönlendirilmesi.
-
Bakımda olan bir siteye sadece sistem yöneticisinin erişmesini sağlamak.
-
Belirli IP adreslerinden gelen botları veya test araçlarının erişim sağlaması.
Dikkat Edilmesi Gerekenler
-
mod_rewrite
Apache modülü aktif olmalıdır. Aksi takdirde kurallar çalışmaz. -
.htaccess
dosyasının bulunduğu dizindeAllowOverride All
tanımlı olmalı. -
IP adreslerinde
\.
kullanılması gerekir, çünkü regex'te nokta (".") herhangi bir karakter anlamına gelir. -
Yönlendirme tipi
302
yerine kalıcı yapmak istenirseR=301
olarak değiştirilebilir.
.htaccess
ile IP bazlı erişim kontrolü ve yönlendirme yapılandırması, web uygulamalarının güvenliği ve denetimi açısından önemli bir uygulamadır. Bu yöntem sayesinde, belirli IP adreslerine özel izin tanımlayabilir ve diğer tüm erişimleri alternatif sayfalara yönlendirebilirsiniz. Geliştirme süreçlerinde veya bakım sırasında büyük kolaylık sağlar.