15%

Tüm Hosting Hizmetlerinde %15 indirim

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

Kodu kullanın:

Skills
Başlayın
31.10.2024
1 +1

.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:

  1. Düz metin editörü kullanın — Nano, Vim, Notepad++ veya herhangi bir kod editörü gibi.
  2. 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.
  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 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/.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 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.html

Bu, 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.html

Yö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 On

Bu 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.100

Birden Fazla IP Adresini Engelle

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 — 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 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 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 -Indexes

Bu 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ünVPS 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/.htaccess

Bu, 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_log

Kuralları 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.html

Bu, 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

15%

Tüm Hosting Hizmetlerinde %15 indirim

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

Kodu kullanın:

Skills
Başlayın