Apache tabanlı paylaşımlı bir sunucuda çalışıyorsanız, ana yapılandırma dosyasına erişmeden bir dizinin davranışını değiştirmenin en pratik yolu kök dizine bırakacağınız küçük bir metin dosyasıdır. Doğru yazılmış birkaç satır, sayfa yükleme sürelerini gözle görülür biçimde kısaltabilir; yanlış bir kural ise tüm siteyi 500 hatasıyla erişilemez hale getirebilir. Bu yüzden her satırın ne yaptığını bilerek ilerlemek gerekir.
.htaccess Ne İşe Yarar, Ne Zaman Devreye Girer
Apache, AllowOverride direktifi izin verdiğinde, istek yapılan dizini ve üst dizinlerini tarayarak .htaccess dosyalarını her istekte yeniden okur. Bu esneklik bir avantaj olduğu kadar maliyet de doğurur: dosya her HTTP isteğinde diskten okunduğu için, kendi sunucunuzu yönetiyorsanız ve ana httpd.conf erişiminiz varsa kuralları doğrudan VirtualHost bloğuna taşımak daha hızlıdır. Paylaşımlı hosting ortamında ise pratikte tek seçenek bu dosyadır ve LiteSpeed gibi sunucular da Apache söz dizimini birebir destekler.
Önbellekleme ile Tekrar Eden İstekleri Azaltma
Tarayıcı önbelleği, statik varlıkların ziyaretçinin diskinde tutulmasını sağlayarak sonraki ziyaretlerde sunucuya hiç gitmemesini sağlar. mod_expires modülü bu işin bel kemiğidir:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType image/svg+xml "access plus 6 months"
ExpiresDefault "access plus 2 days"
</IfModule>Uzun süreli önbellek koyacaksanız dosya adlarına sürüm parmak izi (örneğin style.a1b2c3.css) eklemeyi alışkanlık edinin; aksi halde bir güncelleme yaptığınızda ziyaretçi eski sürümü görmeye devam eder.
Gzip ve Brotli ile Sıkıştırma
Metin tabanlı içerik (HTML, CSS, JS, JSON, SVG) sıkıştırıldığında transfer boyutu çoğu durumda dörtte birine kadar inebilir. mod_deflate ile gzip'i devreye almak birkaç satır yeterlidir:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css
AddOutputFilterByType DEFLATE application/javascript application/json
AddOutputFilterByType DEFLATE image/svg+xml application/xml
</IfModule>Sunucunuzda mod_brotli yüklüyse Brotli genellikle aynı içeriği gzip'ten biraz daha küçük üretir; bu durumda AddOutputFilterByType BROTLI_COMPRESS satırlarını ekleyebilirsiniz. Zaten sıkıştırılmış formatları (JPEG, PNG, WebP, ZIP) yeniden sıkıştırmaya çalışmayın, sadece CPU harcarsınız.
HTTPS Yönlendirmesi ve www Tercihi
Site genelinde tek bir kanonik adres kullanmak hem SEO hem de güvenlik açısından önemlidir. mod_rewrite ile tüm trafiği HTTPS'e ve tercih ettiğiniz alan adı biçimine yönlendirebilirsiniz:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
</IfModule>Bir CDN veya proxy arkasındaysanız %{HTTPS} her zaman doğru değer dönmeyebilir; bu durumda %{HTTP:X-Forwarded-Proto} başlığını kontrol etmek daha güvenilirdir. Doğru altyapıyı seçmek için ihtiyacınıza uygun web hosting paketlerini inceleyerek SSL ve HTTP/2 desteğinin sunulduğundan emin olun.
Güvenlik Başlıkları
HTTP yanıt başlıkları, tarayıcıya sitenizi nasıl ele alması gerektiğini söyler ve birçok yaygın saldırı türünü daha kaynakta engeller. mod_headers ile temel bir set:
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header set Permissions-Policy "geolocation=(), microphone=()"
</IfModule>HSTS başlığını eklemeden önce sitenizin tüm alt alanlarda gerçekten HTTPS sunduğundan emin olun; aksi halde erişim sorunları yaşanır. Content-Security-Policy gibi daha katı kurallar güçlü koruma sağlar ama yanlış yapılandırıldığında kendi kaynaklarınızı bloklayabilir, bu yüzden önce Content-Security-Policy-Report-Only ile test edin.
Dosya ve Dizin Erişimini Kısıtlama
Hassas dosyaların dışarıdan çağrılmasını engellemek tek satırlık önlemlerle mümkündür. Aşağıdaki kurallar yapılandırma dosyalarını, sürüm kontrol dizinlerini ve dizin listelemeyi kapatır:
- Dizin listeleme:
Options -Indexesile index dosyası olmayan klasörlerin içeriğinin sıralanmasını engelleyin. - Hassas dosyalar:
wp-config.php,.envve.gitgibi yolları doğrudan erişime kapatın. - Çalıştırılabilir dosyalar: Yükleme klasörlerinde PHP yürütülmesini durdurarak yüklenen bir kabuğun çalışmasını önleyin.
<FilesMatch "^(wp-config\.php|\.env|\.htaccess)$">
Require all denied
</FilesMatch>
<Directory "/home/kullanici/public_html/wp-content/uploads">
<FilesMatch "\.php$">
Require all denied
</FilesMatch>
</Directory>Apache 2.4 kullanıyorsanız eski Order/Deny söz dizimi yerine Require direktifini tercih edin; ikisi karıştırıldığında beklenmedik sonuçlar doğar. WordPress kuran kullanıcılar için optimize edilmiş bir altyapı arıyorsanız WordPress hosting çözümlerimiz bu güvenlik kurallarının çoğunu varsayılan olarak hazır getirir.
Yöntemlerin Karşılaştırması
| Amaç | Modül | Temel Direktif | Etki Alanı |
|---|---|---|---|
| Tarayıcı önbelleği | mod_expires | ExpiresByType | Performans |
| Sıkıştırma | mod_deflate / mod_brotli | AddOutputFilterByType | Performans |
| HTTPS yönlendirme | mod_rewrite | RewriteRule [R=301] | Güvenlik & SEO |
| Güvenlik başlıkları | mod_headers | Header set | Güvenlik |
| Erişim kısıtı | core / mod_authz | Require all denied | Güvenlik |
Bogahost Önerisi: Her değişiklikten önce mevcut
.htaccessdosyanızın bir kopyasını alın ve kuralları teker teker ekleyip her birinden sonra siteyi yenileyin. Bir 500 hatasıyla karşılaşırsanız son eklediğiniz satırı yorum satırına almanız sorunu hemen bulmanızı sağlar.Sık Yapılan Hatalar
En yaygın tuzak, ilgili modül sunucuda yüklü değilken direktifi koşulsuz yazmaktır; bu durumda Apache satırı tanımaz ve istek 500 ile düşer. Bütün blokları
<IfModule>içine almak bu riski büyük ölçüde ortadan kaldırır. Bir diğer hata, dinamik içerik üreten sayfalara da uzun önbellek süreleri uygulamaktır; sepet, oturum veya panel gibi sayfaların önbelleğe alınmaması için bunları kurallardan açıkça hariç tutun.Toparlarken
İyi yapılandırılmış bir
.htaccess, sunucuya dokunmadan hem hızı hem de saldırı yüzeyini ciddi biçimde iyileştirir. Değişiklikleri küçük adımlarla ekleyip her birini test ederek ilerlerseniz, hem ziyaretçi deneyimini hem de sitenizin dayanıklılığını kontrollü biçimde yükseltirsiniz.
Reklam Alanı
İçerik Altı (728x90)
Yorumlar (0)
Henüz yorum yapılmamış. İlk yorumu siz yapın!
Yorum Yap