- Konu sahibi
- #1
.htaccess dosyası nedir?
.htaccess, Apache web sunucusunda belirli bir dizin ve onun alt dizinleri için yapılandırma yapmanızı sağlayan metin tabanlı bir dosyadır. Ana Apache yapılandırmasına erişiminiz yoksa yönlendirme, özel hata sayfaları, erişim kısıtlamaları ve bazı URL kurallarını bu dosya üzerinden uygulayabilirsiniz. Dosya genellikle sitenin belge kök dizinine yerleştirilir ve varsayılan adı başındaki noktayla birlikte .htaccess şeklindedir; farklı ad yalnız sunucu yapılandırmasında ayrıca tanımlanmışsa geçerlidir.Bu dosya, isteği karşılayan sunucu tarafından okunup ilgili yönergeler destekleniyorsa etkili olur. Sunucu yapılandırmasında ilgili dizin için
AllowOverride kapalıysa dosyadaki kurallar yok sayılabilir. Ayrıca kullandığınız yönergenin ilgili AllowOverride sınıfına veya AllowOverrideList izinlerine dahil edilmesi gerekir.Nasıl çalışır?
.htaccess dosyası bulunduğu dizinin kapsamından itibaren uygulanır. Örneğin /var/www/html/.htaccess içindeki kurallar site kökünü ve alt dizinleri etkileyebilir. /var/www/html/blog/.htaccess dosyası ise yalnızca blog dizini ve altındaki istekler için geçerlidir.Apache her istekte bu tür dosyaları kontrol edebildiği için, ana sunucu yapılandırmasına erişiminiz varsa kalıcı kuralları doğrudan sanal ana makine veya dizin yapılandırmasına koymak genellikle daha uygundur. Paylaşımlı hosting, kontrol paneli ve CMS kurulumu gibi ortamlarda ise
.htaccess pratik bir yönetim katmanı sağlar.Somut örnek: eski adresi yeni adrese yönlendirme
Örneğin
eski-sayfa.html adresini yeni-sayfa adresine kalıcı olarak yönlendirmek istiyorsanız, site kökündeki dosyaya şu kuralları ekleyebilirsiniz:
Kod:
RewriteEngine On
RewriteRule ^eski-sayfa\.html$ /yeni-sayfa [R=301,L]
Burada
RewriteEngine On yeniden yazma motorunu etkinleştirir. RewriteRule istek yolunu eşleştirir, R=301 tarayıcıya kalıcı yönlendirme gönderir, L ise eşleşen kuraldan sonra aynı kural grubunda işlem yapılmamasını ister.Yönergeyi izin ve sonuçla eşleştirin
Farklı yönergeler farklı modül ve override iznine bağlıdır. Yalnız dosyanın bulunması kuralın çalışacağını göstermez.| Yönerge | Amaç | İlk kontrol |
|---|---|---|
| RewriteRule | URL eşleme veya yönlendirme | mod_rewrite ve ilgili override izni |
| ErrorDocument | Özel hata yanıtı | İzin ve hedef hata sayfası |
| Options | Dizin davranışı seçenekleri | İzin verilen Options alt kapsamı |
Güvenli uygulama adımları
- Dosyanın bulunduğu dizini belirleyin. Çoğu hosting hesabında bu dizin
public_html,httpdocsveya uygulamanın belge köküdür. - Mevcut
.htaccessdosyasını indirin ve değiştirmeden önce yedekleyin. Dosya görünmüyorsa FTP istemcisinde veya dosya yöneticisinde gizli dosyaları gösterme seçeneğini açın. - Yeni kuralı dosyanın sonuna eklemeden önce mevcut yönlendirme ve CMS kurallarını inceleyin. Aynı URL'yi etkileyen kurallar sonsuz döngü veya hatalı yönlendirme oluşturabilir.
- Değişikliği kaydedin ve önce doğrudan ilgili adresi, ardından yönlendirme hedefini test edin. Tarayıcı önbelleği yanıltabileceği için gerekirse gizli pencerede veya komut satırıyla kontrol edin.
- HTTP 500 hatası oluşursa son eklediğiniz satırı geçici olarak kaldırın ve Apache hata günlüğünü inceleyin. Hata günlüğü, izin verilmeyen yönergeyi veya sözdizimi sorununu genellikle belirtir.
Yaygın kullanım alanları
Aynı dosyada özel hata sayfaları tanımlanabilir:
Kod:
ErrorDocument 404 /404.html
Dizin listelemesini kapatmak, belirli dosya veya dizinlere erişimi sınırlamak, HTTP'den HTTPS'e yönlendirmek ve uygulamaların SEO uyumlu URL kurallarını çalıştırmak da yaygın kullanım alanlarıdır. Ancak her yönerge her hosting hesabında kullanılmaz; önce Apache sürümü, etkin modüller ve izin verilen override sınıfları kontrol edilmelidir.
Yönlendirme örneklerinde
.htaccess bağlamında RewriteRule deseni genellikle başında eğik çizgi olmadan yazılır. Örneğin ^urun/ eşleşebilirken ^/urun/ beklenen sonucu vermeyebilir. Bu, kök sunucu yapılandırması ile dizin tabanlı .htaccess kuralları arasındaki önemli farklardan biridir.Sık yapılan hatalar
Dosya adını yanlış yazmak:
htaccess.txt veya htaccess aynı dosya değildir; doğru ad .htaccess şeklindedir.Yedeği almadan düzenlemek: Hatalı bir kural tüm siteyi 500 hatasına düşürebilir. Değişiklik öncesi dosyayı saklayın.
AllowOverride sorununu gözden kaçırmak: Kural hiçbir etki göstermiyorsa önce Apache yapılandırmasında ilgili dizin için
AllowOverride None kullanılıp kullanılmadığını ve gerekli modülün etkin olduğunu kontrol edin.Yönlendirme döngüsü oluşturmak: HTTPS, www ve uygulama yönlendirmelerini üst üste eklemek aynı adresin tekrar tekrar kendisine yönlenmesine yol açabilir. Her değişiklikten sonra nihai adresi ve HTTP durum kodunu kontrol edin.
Sık sorulan sorular
.htaccess dosyası Nginx sunucusunda çalışır mı?
Nginx bu dosyayı doğrudan okumaz; kurallar Nginx yapılandırmasında karşılanmalıdır. Nginx’in arkasında Apache bulunan bir düzende ise Apache’ye ulaşan isteklerde Apache’nin .htaccess kuralları etkili olabilir. Önce gerçek sunucu zincirini belirleyin.
.htaccess dosyasını silmek güvenli midir?
Uygulamaya bağlıdır. WordPress ve benzeri sistemler URL yönlendirmeleri veya erişim kuralları için bu dosyaya ihtiyaç duyabilir. Silmeden önce yedek alın ve sitenin ana sayfa, alt sayfa, yönetim paneli ve statik dosya erişimini test edin.