Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
LiteSpeed ​​Barındırma

.htaccess Nedir? Apache Yapılandırması Hakkında Kapsamlı Bir Rehber

.htaccess dosyası, Apache sunucuları ile ç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 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ı — kısaca “hypertext access” anlamına gelir — Apache HTTP Server 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 dosya ve alt dizinlere hemen uygulanması anlamına gelir.

Ana Apache yapılandırma dosyasında yapılan değişikliklerin (httpd.conf) 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, dosyayı hem esnek hem de güçlü kılar — ancak dikkatli bir şekilde yönetilmesi gereken bir dosyadır.

> .htaccess’i kimler kullanır? Web geliştiricileri, SEO uzmanları ve Apache tabanlı barındırma ortamlarında çalışan sistem yöneticileri — Paylaşımlı Web Barındırma ve VPS Barındırma planları dahil — .htaccess dosyasını günlük olarak web sitesi davranışını kontrol etmek için kullanır.

.htaccess Dosyası Nasıl Oluşturulur

.htaccess dosyası oluşturmak basittir, ancak birkaç kural kesinlikle izlenmelidir:

  1. Düz metin editörü kullanın örneğin Nano, Vim, Notepad++ veya herhangi bir kod editörü.
  2. Dosyayı tam olarak adlandırın .htaccess — başında bir nokta ve dosya uzantısı olmadan. Dosya adının kendisi uzantıdır.
  3. 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.
  4. Düz metin olarak kaydedin — asla zengin metin veya biçimlendirilmiş belge olarak değil.
  5. Doğru dosya izinlerini ayarlayın: 644, sahibinin okuma ve yazma izni verirken diğerlerini yalnızca okuma erişimiyle sınırlandıran önerilen izin seviyesidir.

Linux sunucusunda SSH üzerinden dosyayı anında oluşturabilirsiniz:

nano /var/www/html/public_html/.htaccess

Kaydedildikten 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 yer almaktadır.

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 yönlendirirler.

301 Kalıcı Yönlendirme (Sayfa Taşındı)

Redirect 301 /old-page.html https://www.example.com/new-page.html

Bu, hem kullanıcıları hem de arama motoru tarayıcılarını eski URL’den yeni URL’ye gönderir ve tam bağlantı değerini aktarır.

302 Geçici Yönlendirme

Redirect 302 /sale https://www.example.com/seasonal-offers.html

Yönlendirme geçici olduğunda, örneğin bir promosyon veya bakım dönemi sırasında 302 kullanın.

Tüm Bir Etki Alanını Yönlendirme

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 faydalıdır — Alan Adı Kaydı gibi bir hizmet aracılığıyla yeni bir etki alanı kaydederken yaygın bir senaryodur.

2. SEO-Dostu URL’ler için URL Yeniden Yazma

URL yeniden yazma, dinamik, parametre yüklü 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 kullanımının en etkili yollarından biridir.

Yeniden Yazma Motorunu Etkinleştirme

RewriteEngine On

Bu satır, herhangi bir RewriteRule yönergesinden önce görünmelidir.

Dinamik URL’leri Temiz URL’lere Yeniden Yazma

RewriteRule ^products/([a-zA-Z0-9-]+)$ product.php?item=$1 [L]

Bu, example.com/products/blue-sneakers öğesini example.com/product.php?item=blue-sneakers öğesine yeniden yazar — şeffaf bir şekilde, tarayıcıda kullanıcının gördüğü şeyi değiştirmeden.

.php Uzantılarını URL’lerden Kaldırma

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+)$ $1.php [NC,L]

Bu, example.com/about gibi URL’lerin about.php öğesini dosya uzantısını ortaya çıkarmadan sunmasına izin verir.

3. HTTPS’yi Zorunlu Kılma

Tüm trafiği HTTPS aracılığıyla zorlamak, temel bir güvenlik gereksinimidir ve onaylanmış bir Google sıralama sinyalidir. Bir SSL Sertifikası yüklüyse, tüm HTTP trafiğinin sitenizin güvenli sürümüne otomatik olarak yönlendirilmesini sağlamak için aşağıdaki .htaccess kurallarını kullanın.

Siteyi Tamamında HTTPS’ye Zorla

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 öğesini markalı, kullanıcı dostu hata sayfaları sunacak şekilde yapılandırabilirsiniz ve ziyaretçileri sitenizde tutabilirsiniz.

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 markanızla tutarlı tutun.
  • Yönlendirme döngülerinden kaçının — hata sayfaları statik HTML dosyaları olmalıdır.

5. IP Adresi ile Erişimi Kısıtlama

.htaccess, IP adresine göre sitenize veya belirli dizinlere kimin erişebileceği konusunda ince taneli kontrol sağlar. Bu, yönetici panellerini, hazırlama ortamlarını veya hassas dizinleri korumak için çok değerlidir.

Belirli Bir IP Adresini Engelleme

Deny from 192.168.1.100

Birden Fazla IP Adresini Engelleme

Deny from 192.168.1.100
Deny from 10.0.0.50
Deny from 203.0.113.0/24

Yalnı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.25

Bu yapılandırma, açıkça listelenen IP adreslerinden gelen trafiği hariç tutarak tüm trafiği engeller — bir WordPress yönetici panelini veya bir hazırlama sitesini kilitlemek için idealdir.

6. Dizinleri Parola ile Koruma

.htaccess ile birlikte bir .htpasswd dosyası kullanarak herhangi bir dizine HTTP Temel Kimlik Doğrulaması ekleyebilirsiniz.

Adım 1: .htpasswd dosyasını oluşturma

Sunucunuzda htpasswd yardımcı programını kullanın:

htpasswd -c /etc/apache2/.htpasswd yourusername

Adım 2: .htaccess dosyanıza aşağıdakini ekleyin

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

Korunan 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 Sona Erme Başlıklarını Ayarlama

<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 sitelerinin resimlerinizi doğrudan gömmesi, izniniz olmadan bant genişliğinizi tüketmesi durumudur. Bunu .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 öğesini gerçek etki alanınızla değiştirin. Bu, resimlerinizi hotlink yapmaya çalışan herhangi bir harici siteye 403 Forbidden yanıtı döndürür.

9. Dizin Listesini Devre Dışı Bırakma

Varsayılan olarak, Apache hiçbir dizin dosyası yoksa 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ırakma

Options -Indexes

Bu tek satır, Apache’nin otomatik dizin listeleri oluşturmasını önler ve bunun yerine 403 Forbidden 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ı basit ve iyi organize tutun — artık gerekli olmayan kuralları kaldırın.
  • .htaccess yalnızca gerekli yerlerde kullanın — belirli kurallar gerektiren dizinlere yalnızca bunu yerleştirin.
  • Kuralları httpd.conf taşımayı düşünün — root erişiminiz olan bir VPS Hosting veya Dedicated Server üzerinde, kuralları doğrudan ana Apache yapılandırmasına yerleştirmek önemli ölçüde daha hızlıdır çünkü başlangıçta yalnızca bir kez okunur.

Dosya İzinleri

Her zaman .htaccess dosya izinlerini 644 olarak ayarlayın:

chmod 644 /var/www/html/public_html/.htaccess

Bu, yetkisiz kullanıcıların dosyayı değiştirmesini engellirken 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 Internal Server Error 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, ardından sonrakine geçin. Bu, hangi kuralın soruna neden olduğunu belirlemek için 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_log

Kuralları Geçici Olarak Yorum Haline Getirin

Devre dışı bırakmak istediğiniz kuralları silmeden yorum haline getirmek için # karakterini kullanın:

# RewriteRule ^old-page$ /new-page [R=301,L]

Yönlendirmeleri curl ile Test Edin

Komut satırından yönlendirme davranışını doğrulamak için curl kullanın:

curl -I http://www.example.com/old-page.html

Bu, tam sayfayı yüklemeden yönlendirmeler için Location başlığı da 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 etmenizi sağlar.

.htaccess Farklı Hosting Ortamlarında

.htaccess kullanılabilirliği ve davranışı hosting ortamınıza bağlıdır:

Hosting Türü.htaccess DesteğiNotlar
Paylaşımlı Hosting✅ Tam destekTipik olarak Apache’yi yapılandırmanın tek yolu
VPS Hosting✅ Tam destekhttpd.conf dosyasını doğrudan düzenleyebilir, daha iyi performans için
Dedicated Servers✅ Tam destekTam root erişimi; kuralları ana yapılandırmaya taşımayı düşünün
Nginx Servers❌ DesteklenmiyorNginx farklı bir yapılandırma sistemi kullanır

cPanel ile VPS üzerindeyseniz, birçok .htaccess işlevini doğrudan cPanel arayüzü aracılığıyla yönetebilirsiniz; yönlendirmeler, hotlink koruması ve dizin gizliliği dahil olmak üzere — dosyayı manuel olarak düzenlemeden.

.htaccess Hakkında Sık Sorulan Sorular

.htaccess Nginx’te çalışır mı?

Hayır. .htaccess, Apache HTTP Server’a özeldir. Nginx, tüm kuralların sunucu bloğu yapılandırma dosyalarında tanımlandığı farklı bir yapılandırma modeli kullanır. Apache’den Nginx’e geçiş yapıyorsanız, .htaccess kurallarınızı Nginx server bloğu söz dizimine dönüştürmeniz gerekecektir.

Birden fazla .htaccess dosyam olabilir mi?

Evet. Herhangi bir dizine .htaccess dosyası yerleştirebilirsiniz. Apache bunları hiyerarşik olarak işler — bir alt dizinin .htaccess dosyasındaki kurallar, üst dizinlerdeki kuralları geçersiz kılabilir veya tamamlayabilir.

.htaccess değişiklikleri hemen etkili olur mu?

Evet. Apache yeniden başlatılmasını gerektirmeyen httpd.conf değişikliklerinin aksine, .htaccess değişiklikleri hemen etkili olur.

.htaccess’te söz dizimi hatası olursa ne olur?

Apache, etkilenen dizine yapılan herhangi bir istek için 500 Internal Server Error döndürecektir. Değişiklik yapmadan önce her zaman .htaccess dosyanızın yedeğini alın.

Sonuç

.htaccess dosyası, herhangi bir web yöneticisinin araç setinde vazgeçilmez bir araçtır. HTTPS’yi zorunlu kılmaktan ve SEO dostu URL’ler oluşturmaktan kötü amaçlı IP’leri engellemeye ve hassas dizinleri korumaya kadar, Apache sunucu davranışını dizin düzeyinde kontrol etmek için esnek ve güçlü bir mekanizma sağlar.

Ancak bu güç beraberinde sorumluluk getirir. Değişiklikleri her zaman dikkatle test edin, hata günlüklerinizi izleyin ve performans düşüşünü önlemek için kurallarınızı mümkün olduğunca basit tutun. Tam sunucu erişiminiz olan ortamlarda — örneğin bir Dedicated Server — kritik kuralları optimal performans için ana Apache yapılandırmasına taşımayı düşünün.

Shared Web Hosting üzerinde basit bir blog yönetiyor olsanız ya da yüksek performanslı bir VPS üzerinde karmaşık bir uygulama çalıştırıyor olsanız, .htaccess konusunda uzmanlaşmak size web sunucunuzun her isteği nasıl işlediği konusunda kesin ve anlık kontrol sağlayacaktır.