Aşağıda .htaccess dosyasının ne olduğu, nasıl oluşturulacağı ve "HTTP'den HTTPS'e" yönlendirme (force HTTPS) işleminin nasıl yapılacağıyla ilgili temel bilgileri ve örnekleri bulabilirsiniz.
1. .htaccess Nedir?
– Apache web sunucusunda her bir dizine özel ayarlar yapmaya imkân veren düz metin tabanlı yapılandırma dosyasıdır.
– Sunucu seviyesinde (httpd.conf) değil de, belirli bir klasör ve alt klasörleri için kural tanımlamanıza izin verir.
– Yönlendirmeler, URL yeniden yazımları (mod_rewrite), parola koruma, MIME tipi ayarları, önbellekleme kuralları, CORS ve benzeri pek çok işlemi barındırabilir.
2. .htaccess Nasıl Oluşturulur?
1) Düz metin düzenleyicide (ör. Notepad++, VS Code, SublimeText) yeni bir dosya oluşturun.
2) Dosya adını ".htaccess" (nokta ile başlar) olarak kaydedin.
3) FTP/SFTP ya da dosya yöneticisi ile sitenizin "public_html" (veya kök) klasörüne aktarın.
4) Apache'nin o dizindeki .htaccess kullanımına izin verdiğinden emin olmak için ana sunucu yapılandırmasında (httpd.conf) "AllowOverride All" ayarının aktif olması gerekir.
3. HTTP'den HTTPS'e Yönlendirme (Force HTTPS)
Aşağıdaki örnekte "mod_rewrite" modülü kullanılarak tüm gelen "
http://" istekleri "
https://" olarak yeniden yazılıyor. Dosyanın en üstüne ekleyebilirsiniz:
RewriteEngine On
# 1. Yönlendirmeyi sadece HTTP isteklere uygula
RewriteCond %{HTTPS} off
# 2. İstek hangi host'a geldiyse, aynı host ve aynı URI'ye yönlendir
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Açıklamalar:
- RewriteEngine On → mod_rewrite'ı aktifleştirir.
- %{HTTPS} off → Gelen isteğin HTTPS üzerinden olmadığı koşulunu kontrol eder.
- R=301 → Kalıcı yönlendirme (SEO açısından tercih edilir).
- L → Bu kural çalıştıktan sonra .htaccess'in geri kalan kuralları atlanır.
4. Örnek Tam .htaccess Dosyası
# BEGIN Force HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
# END Force HTTPS
# BEGIN Gzip Sıkıştırma (isteğe bağlı)
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain text/css text/html application/javascript application/json image/svg+xml
</IfModule>
# END Gzip Sıkıştırma
# BEGIN Cache-Control (örnek)
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
</IfModule>
# END Cache-Control
5. Dikkat Edilmesi Gerekenler
- .htaccess dosyasında bir hata yaparsanız siteniz erişilemez hâle gelebilir. Yedek almayı unutmayın.
- Sunucunuzda mod_rewrite, mod_deflate vb. modüllerin yüklü ve etkin olduğundan emin olun.
- "AllowOverride None" durumunda .htaccess kuralları çalışmaz; ana yapılandırmada AllowOverride ayarını gözden geçirin.
Bu adımları takip ederek .htaccess dosyanızı kolayca oluşturabilir, sitenizi güvenli HTTPS protokolüne yönlendirebilir ve diğer temel yapılandırmaları gerçekleştirebilirsiniz.