.htaccess Nedir? Apache Yapılandırması Hakkında Kapsamlı Bir Rehber
.htaccess dosyası, Apache sunucularıyla çalışan web yöneticileri için mevcut olan en güçlü araçlardan biridir. URL yönlendirmelerini yönetmeniz, HTTPS’yi zorunlu kılmanız, IP’ye göre erişimi kısıtlamanız veya özel hata sayfaları sunmanız gerekip gerekmediğine bakılmaksızın, .htaccess size ana sunucu yapılandırmasına dokunmadan sunucunuzun davranışı üzerinde ayrıntılı, dizin düzeyinde kontrol sağlar.
Bu kapsamlı kılavuzda, .htaccess hakkında bilmeniz gereken her şeyi ele alacağız: nedir, nasıl çalışır, nasıl oluşturulur ve her web yöneticisinin ustalaşması gereken en önemli kullanım durumları.
.htaccess Nedir?
.htaccess dosyası — “hypertext access” (hipermetin erişimi) kısaltması — Apache HTTP Sunucusu tarafından kullanılan gizli, düz metin yapılandırma dosyasıdır. Sunucu yönergelerini dizin bazında tanımlamanıza olanak tanır; bu, bir .htaccess dosyasına yerleştirdiğiniz kuralların dosyanın bulunduğu klasördeki tüm dosyalara ve alt dizinlere hemen uygulanması anlamına gelir.
Ana Apache yapılandırma dosyasında (httpd.conf) yapılan değişikliklerin aksine, .htaccess kuralları anında yürürlüğe girer — sunucu yeniden başlatılması gerekmez. Bu, ana sunucu yapılandırmasına kök erişimi olmayan kullanıcıların bulunduğu paylaşılan barındırma ortamları için özellikle yararlıdır.
Bir kullanıcı web sitenizden bir kaynak istediğinde, Apache ilgili dizindeki .htaccess dosyasını okur ve yapılandırılan kuralları uygular. Bu, hem esnek hem de güçlü kılar — ancak dikkatli bir şekilde yönetilmesi gereken bir dosyadır.
> .htaccess’i kimler kullanır? Apache tabanlı barındırma ortamlarında çalışan web geliştiriciler, SEO uzmanları ve sistem yöneticileri — Paylaşılan Web Barındırma ve VPS Barındırma planları dahil — web sitesi davranışını kontrol etmek için .htaccess’i günlük olarak kullanırlar.
.htaccess Dosyası Nasıl Oluşturulur
.htaccess dosyası oluşturmak basittir, ancak birkaç kural kesinlikle izlenmelidir:
- Düz metin editörü kullanın — Nano, Vim, Notepad++ veya herhangi bir kod editörü gibi.
- Dosyayı tam olarak .htaccess olarak adlandırın — başında bir nokta ve dosya uzantısı olmadan. Dosya adının kendisi uzantıdır.
- Dosyayı yerleştirin web sitenizin kök dizinine (genellikle public_html, www veya htdocs olarak adlandırılır) veya belirli kuralların uygulanmasını istediğiniz herhangi bir alt dizine.
- Düz metin olarak kaydedin — asla zengin metin veya biçimlendirilmiş belge olarak değil.
- Doğru dosya izinlerini ayarlayın: 644, sahibinin okuma ve yazma yapmasına izin verirken diğerlerini salt okunur erişimle kısıtlayan önerilen izin seviyesidir.
SSH aracılığıyla bir Linux sunucusunda, dosyayı anında şu şekilde oluşturabilirsiniz:
nano /var/www/html/public_html/.htaccessKaydedildikten sonra, Apache kuralları hemen uygulamaya başlayacaktır.
.htaccess’in Yaygın Kullanımları
Aşağıda, en önemli ve yaygın olarak kullanılan .htaccess yönergeleri, pratik kod örnekleriyle birlikte verilmiştir.
1. URL’leri Yönlendirme
Yönlendirmeler, sayfalar taşındığında, yeniden adlandırıldığında veya kalıcı olarak silindiğinde gereklidir. SEO değerini korurlar ve kullanıcıları doğru konuma gönderirler.
301 Kalıcı Yönlendirme (Sayfa Taşındı)
Redirect 301 /old-page.html https://www.example.com/new-page.htmlBu, hem kullanıcıları hem de arama motoru tarayıcılarını eski URL’den yeni URL’ye gönderir ve işlemde tam bağlantı öz sermayesini iletir.
302 Geçici Yönlendirme
Redirect 302 /sale https://www.example.com/seasonal-offers.htmlYönlendirme geçici olduğunda, örneğin bir promosyon veya bakım dönemi sırasında 302 kullanın.
Tüm Etki Alanını Yönlendir
RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain.com$ [NC]
RewriteRule ^(.*)$ https://www.newdomain.com/$1 [L,R=301]Bu, özellikle etki alanı geçişleri sırasında yararlıdır — Alan Adı Kaydı gibi bir hizmet aracılığıyla yeni bir etki alanı kaydederken yaygın bir senaryo.
2. SEO Dostu URL’ler için URL Yeniden Yazma
URL yeniden yazma, dinamik, parametre yoğun URL’leri temiz, okunabilir ve SEO dostu yapılara dönüştürür. Bu, arama motoru sıralamalarını iyileştirmek için .htaccess’in en etkili kullanımlarından biridir.
Yeniden Yazma Motorunu Etkinleştir
RewriteEngine OnBu satır, herhangi bir RewriteRule yönergesinden önce görünmelidir.
Dinamik URL’leri Temiz URL’lere Yeniden Yaz
RewriteRule ^products/([a-zA-Z0-9-]+)$ product.php?item=$1 [L]Bu, product.php?id=123’ü product/123’e yeniden yazar — tarayıcıda görünen şeyi değiştirmeden, şeffaf bir şekilde.
.php Uzantılarını URL’lerden Kaldır
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+)$ $1.php [NC,L]Bu, example.com/about gibi URL’lerin, dosya uzantısını açığa çıkarmadan example.com/about.php’yi sunmasına olanak tanır.
3. HTTPS’yi Zorunlu Kılma
Tüm trafiği HTTPS aracılığıyla zorunlu kılmak, temel bir güvenlik gereksinimidir ve onaylanmış bir Google sıralama sinyalidir. SSL Sertifikası yüklüyse, sitenizin tüm HTTP trafiğinin otomatik olarak güvenli sürüme yönlendirilmesini sağlamak için aşağıdaki .htaccess kurallarını kullanın.
HTTPS’yi Site Genelinde Zorunlu Kıl
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]HTTPS’yi Zorunlu Kıl ve www’yi Kaldır (Kanonik URL)
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www. [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]Bu, sitenizin her zaman tek bir, kanonik HTTPS URL’sinden sunulmasını sağlar — hem SEO hem de güvenlik için kritiktir.
4. Özel Hata Sayfaları Ayarlama
Genel tarayıcı hata mesajlarını görüntülemek yerine, .htaccess’i, ziyaretçileri sitenizde tutacak markalı, kullanıcı dostu hata sayfaları sunacak şekilde yapılandırabilirsiniz.
Yaygın HTTP Hata Kodları
ErrorDocument 400 /errors/400.html
ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.htmlÖzel Hata Sayfaları için En İyi Uygulamalar:
- Kullanıcıların aradıklarını bulabilmeleri için sitenizin navigasyonunu ekleyin.
- Kullanıcıların 404 hatalarından kurtulmasına yardımcı olmak için bir arama çubuğu ekleyin.
- Tasarımı ana site markasıyla tutarlı tutun.
- Yönlendirme döngülerinden kaçının — hata sayfaları statik HTML dosyaları olmalıdır.
5. IP Adresine Göre Erişimi Kısıtlama
.htaccess, IP adresine göre sitenize veya belirli dizinlere kimlerin erişebileceği konusunda ince taneli kontrol sağlar. Bu, yönetici panellerini, hazırlama ortamlarını veya hassas dizinleri korumak için paha biçilmezdir.
Belirli Bir IP Adresini Engelle
Deny from 192.168.1.100Birden Fazla IP Adresini Engelle
Deny from 192.168.1.100
Deny from 10.0.0.50
Deny from 203.0.113.0/24Yalnızca Belirli IP’lere İzin Ver (Beyaz Liste)
Order Deny,Allow
Deny from all
Allow from 192.168.1.101
Allow from 203.0.113.25Bu yapılandırma, açıkça listelenen IP adreslerinden gelen trafiği hariç tutarak tüm trafiği engeller — WordPress yönetici panelini veya bir hazırlama sitesini kilitlemek için idealdir.
6. Dizinleri Parola ile Koruma
.htaccess’i, .htpasswd dosyasıyla birlikte kullanarak herhangi bir dizine HTTP Temel Kimlik Doğrulaması ekleyebilirsiniz.
Adım 1: .htpasswd dosyasını oluşturun
Sunucunuzda htpasswd yardımcı programını kullanın:
htpasswd -c /etc/apache2/.htpasswd yourusernameAdım 2: .htaccess dosyanıza aşağıdakini ekleyin
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-userKorunan dizine erişmeye çalışan herkes, giriş yapabilmek için bir kullanıcı adı ve parola istemi alacaktır.
7. Tarayıcı Önbelleğini Kontrol Etme
Düzgün yapılandırılmış önbelleğe alma, sayfa yükleme hızını iyileştirir ve sunucu yükünü azaltır — her ikisi de SEO ve kullanıcı deneyimi için önemli faktörlerdir.
Önbellek Son Kullanma Başlıklarını Ayarla
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/gif "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 text/html "access plus 1 day"
</IfModule>8. Hotlinking’i Engelleme
Hotlinking, diğer web siteleri izniniz olmadan doğrudan resimlerinizi gömmek ve bant genişliğinizi tüketmek için oluşur. .htaccess ile engelleyin:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www.)?example.com/ [NC]
RewriteRule .(jpg|jpeg|png|gif|webp|svg)$ - [F,NC]example.com yerine gerçek etki alanınızı yazın. Bu, resimlerinizi hotlink yapmaya çalışan herhangi bir harici siteye 403 yanıtı döndürür.
9. Dizin Listelemeyi Devre Dışı Bırakma
Varsayılan olarak, hiçbir dizin dosyası yoksa Apache, bir dizinin içeriğini görüntüleyebilir. Bu, dosya yapınızı ortaya çıkaran önemli bir güvenlik riskidir.
Dizin Taramasını Devre Dışı Bırak
Options -IndexesBu tek satır, Apache’nin otomatik dizin listeleri oluşturmasını engeller ve bunun yerine 403 hatası döndürür.
Güvenlik ve Performans Hususları
.htaccess son derece güçlü olsa da, sorumlu bir şekilde kullanılmalıdır. Her yöneticinin aklında tutması gereken temel hususlar şunlardır:
Performans Etkisi
Apache, sunucuya yapılan her tek istekte .htaccess dosyasını okur. .htaccess dosyanız düzinelerce karmaşık kural içeriyorsa, bu her isteğe ölçülebilir bir ek yük ekler. Performans etkisini en aza indirmek için:
- Kuralları yalın ve iyi organize tutun — artık gerekli olmayan kuralları kaldırın.
- .htaccess’i yalnızca gerekli yerlerde kullanın — bunu yalnızca belirli kurallar gerektiren dizinlere yerleştirin.
- Kuralları httpd.conf’a taşımayı düşünün — VPS Barındırma veya Özel Sunucu gibi tam sunucu erişiminiz olan ortamlarda, kuralları ana Apache yapılandırmasına yerleştirmek, başlangıçta yalnızca bir kez okunduğundan önemli ölçüde daha hızlıdır.
Dosya İzinleri
.htaccess dosya izinlerini her zaman 644 olarak ayarlayın:
chmod 644 /var/www/html/public_html/.htaccessBu, yetkisiz kullanıcıların dosyayı değiştirmesini engeller ve Apache’nin onu okumasına izin verir.
.htaccess Dosyasının Kendisini Koruyun
.htaccess dosyanıza web’den doğrudan erişimi önleyin:
<Files ".htaccess">
Order Allow,Deny
Deny from all
</Files>.htaccess Kurallarını Test Etme ve Sorun Giderme
Yanlış .htaccess sözdizimi, 500 Dahili Sunucu Hatası yanıtlarının en yaygın nedenlerinden biridir. Sorunları verimli bir şekilde hata ayıklamak için bu en iyi uygulamaları izleyin:
Bir Seferde Bir Değişiklik Yapın
Asla aynı anda birden fazla değişiklik yapmayın. Bir kural uygulayın, test edin, sonra sonrakine geçin. Bu, hangi kuralın soruna neden olduğunu belirlemeyi kolaylaştırır.
Apache Hata Günlüklerini Kontrol Edin
Apache hata günlükleri birincil tanı aracınızdır:
# Ubuntu/Debian
tail -f /var/log/apache2/error.log
# CentOS/RHEL
tail -f /var/log/httpd/error_logKuralları Geçici Olarak Açıklama Satırı Yapın
Silmeden devre dışı bırakmak istediğiniz kuralları açıklama satırı yapmak için # karakterini kullanın:
# RewriteRule ^old-page$ /new-page [R=301,L]Yönlendirmeleri curl ile Test Edin
Yönlendirme davranışını komut satırından doğrulamak için curl kullanın:
curl -I http://www.example.com/old-page.htmlBu, tam sayfayı yüklemeden, yönlendirmeler için Location başlığı dahil olmak üzere HTTP başlıklarını döndürür.
Çevrimiçi .htaccess Test Aracı Kullanın
Birkaç ücretsiz çevrimiçi araç, .htaccess yeniden yazma kurallarını canlı sunucunuza dağıtmadan önce örnek URL’lere karşı test etmenize olanak tanır.
Farklı Barındırma Ortamlarında .htaccess
.htaccess’in kullanılabilirliği ve
