Çok güzel bir soru. Önce .htaccess dosyası nedir her sunucuda var mıdır bu sorulara cevap verelim.
.htaccess (Hypertext Access) dosyası, Apache web sunucusunda çalışan siteler için yapılandırma dosyasıdır. Bu dosya, web sunucusunun belirli bir klasördeki veya alt klasörlerdeki dosya ve dizinlere nasıl tepki vereceğini kontrol eder.
Hypertext de neymiş demeyin. http:// -> Hyper Text Transfer Protocol yani web siteleri için kullanılan protokoldür. .htaccess de tam olarak bu URL bağlantıları için gerekli dosyadır.
Sadece Apache sunucular dedik başka sunucular da var mı? Evet var örneğin bizim sunucu nginx kullanıyor bu sebeğle .htaccess dosyası yok.
-
Kalıcı Bağlantılar (Permalinks): WordPress’te kalıcı bağlantı yapılandırmasını değiştirdiğinizde, .htaccess dosyası otomatik olarak güncellenir. Bu, kullanıcı dostu URL’ler oluşturmak için gereklidir.
-
Güvenlik: .htaccess dosyası, belirli IP adreslerini engellemek, belirli dosya ve dizinlere erişimi sınırlamak veya yönlendirmek ve diğer güvenlik önlemlerini almak için kullanılabilir.
-
Özel Yönlendirmeler: Eğer bir sayfanın URL’sini değiştirdiyseniz ve eski URL’ye gelen ziyaretçileri yeni URL’ye yönlendirmek istiyorsanız, .htaccess dosyası ile 301 yönlendirmesi yapabilirsiniz.
-
Önbellekleme: .htaccess dosyası, tarayıcı önbellekleme kurallarını tanımlamak için kullanılabilir, böylece sitenin daha hızlı yüklenmesine yardımcı olabilir.
-
Gzip Sıkıştırma: .htaccess dosyası, web sayfası içeriğini sıkıştırmak için Gzip sıkıştırmasını etkinleştirmek üzere kullanılabilir. Hız için önemli.
-
Hata Sayfalarını Özelleştirme: 404 hata sayfası gibi özel hata sayfalarını tanımlamak için .htaccess dosyası kullanılabilir.
-
MIME Türlerini Tanımlama: .htaccess dosyası, sunucunun belirli dosya türlerini nasıl işleyeceğini tanımlamak için kullanılabilir. Örneğin jpg dosyalarına erişimi kısıtla vb.
Genel olarak düzenlemesini sevmediğim bir dosyadır. Yazım dili bana hala karışık geliyor. Genellikle değişiklik yapmam. Bazı durumlarda sıfırlamak gerekiyor. Bu durumda aşağıdaki WordPress’in varsayılan htaccess kodlarını kullanırım
# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress