.htaccess Dosyasının İşlevi ve Kullanım Ortamları

.htaccess dosyası, Apache web sunucusunda belirli dizinler için yapılandırma ayarlarını değiştirmek amacıyla kullanılır. Web yöneticilerine sunucu ayarlarını değiştirmeden esnek ve hızlı bir yapılandırma imkanı tanır.
.htaccess Dosyasının İşlevi ve Kullanım Ortamları - bimakale.com | bimakale.com
24 Haziran 2024 Pazartesi - 09:53 (4 Ay önce)

.htaccess dosyası, Apache web sunucusunda belirli dizinler için yapılandırma ayarlarını değiştirmek amacıyla kullanılır. Web yöneticilerine sunucu ayarlarını değiştirmeden esnek ve hızlı bir yapılandırma imkanı tanır. Genellikle URL yeniden yazma, erişim kontrolü ve yetkilendirme, özel hata sayfaları oluşturma, dosya ve dizin indeksi ayarları, güvenlik ve performans iyileştirmeleri gibi amaçlarla kullanılır. Doğru ve güvenli bir şekilde kullanıldığında, web sitesinin performansı ve güvenliği açısından büyük avantaj sağlar.

Kullanım Alanları

.htaccess dosyası ile yapılabilecek işlemler oldukça geniş bir yelpazeye yayılmaktadır. .htaccess dosyası ile gerçekleştirilebilecek başlıca işlemler:

1. URL Yeniden Yazma ve Yönlendirme

  • URL yeniden yazma (mod_rewrite): Dinamik URL'leri kullanıcı dostu hale getirme.
  • 301 Yönlendirmeleri: Kalıcı olarak bir URL'yi başka bir URL'ye yönlendirme.
  • 302 Yönlendirmeleri: Geçici olarak bir URL'yi başka bir URL'ye yönlendirme.
  • Köprü Sayfası Yönlendirmesi: Trafiği belirli bir sayfaya yönlendirme.

2. Erişim Kontrolü ve Yetkilendirme

  • Şifre koruması (Basic Authentication): Belirli dizinleri kullanıcı adı ve şifre ile koruma.
  • IP tabanlı erişim kontrolü: Belirli IP adreslerine veya IP aralıklarına erişim izni verme veya engelleme.
  • Dosya ve dizin erişim kısıtlamaları: Belirli dosya türlerine veya dizinlere erişimi kısıtlama.

3. Özel Hata Sayfaları

  • Özel hata sayfaları: 404 (Bulunamadı), 403 (Yasak), 500 (Sunucu Hatası) gibi hata kodları için özel sayfalar oluşturma.

4. Dosya ve Dizin İndeksi Ayarları

  • Dizin listelemeyi kapatma: Belirli dizinlerde dosya ve dizin listesinin görüntülenmesini engelleme.
  • Özel dizin listeleme: Dizin listeleri için özel şablonlar kullanma.

5. MIME Türleri Ayarları

  • MIME türleri belirleme: Belirli dosya uzantıları için MIME türlerini tanımlama veya değiştirme.

6. Güvenlik İyileştirmeleri

  • Hotlink koruması: Başka sitelerin, sitenizdeki görselleri ve diğer dosyaları doğrudan kullanmasını engelleme.
  • Dosya türü erişim kontrolü: Belirli dosya türlerine erişimi sınırlama.
  • HTTP başlıkları ekleme: Güvenlik ve performans için özel HTTP başlıkları ekleme (örneğin, HSTS, Content Security Policy).

7. Performans İyileştirmeleri

  • Gzip sıkıştırma: HTML, CSS, JavaScript dosyalarını sıkıştırarak sayfa yükleme sürelerini azaltma.
  • Önbellekleme ayarları: Tarayıcı önbellekleme sürelerini ayarlayarak performansı artırma.

8. Dil ve Karakter Seti Ayarları

  • Varsayılan dil ayarı: Belirli dizinler için varsayılan dili ayarlama.
  • Karakter seti belirleme: Belirli dosyalar için karakter seti tanımlama.

9. Özel Yönlendirmeler

  • Mobil cihaz yönlendirmesi: Mobil cihazlardan gelen trafiği mobil sürüme yönlendirme.
  • Dil bazlı yönlendirme: Kullanıcının tarayıcı diline göre farklı sayfalara yönlendirme.

10. CORS Yapılandırması

       CORS (Cross-Origin Resource Sharing), web sitelerinin farklı kökenlerden gelen kaynaklara erişimini kontrol etmek için kullanılır. .htaccess dosyası ile CORS yapılandırması yapmak, belirli kaynakların hangi kökenlerden erişilebileceğini belirlemeyi sağlar.

11. Diğer Ayarlar

  • SSI (Server Side Includes): Sunucu tarafı dahil etmeler için ayar yapma.
  • CGI ve Perl ayarları: CGI ve Perl betikleri için özel ayarlar yapma.
  • Belirli modüllerin etkinleştirilmesi veya devre dışı bırakılması: Apache modüllerinin etkinleştirilmesi veya devre dışı bırakılması.

Bu işlemler, .htaccess dosyasının web yöneticilerine sağladığı esneklik ve güç hakkında bir fikir vermektedir. Her bir ayarın doğru ve güvenli bir şekilde uygulanması, web sitesinin performansı ve güvenliği açısından büyük önem taşır.

Örnek Kullanım Senaryoları

1. URL Yeniden Yazma

Kullanıcı dostu URL'ler oluşturmak için mod_rewrite modülü kullanılır:

RewriteEngine On
RewriteRule ^page/([0-9]+)$ page.php?id=$1 [L]

Bu örnekte, example.com/page/1 adresi example.com/page.php?id=1 olarak yeniden yazılır.

301 Yönlendirmeleri:

Redirect 301 /oldpage.html http://www.example.com/newpage.html

Bu kural, oldpage.html dosyasını kalıcı olarak newpage.html dosyasına yönlendirir.

302 Yönlendirmeleri:

Redirect 302 /temporarypage.html http://www.example.com/newpage.html

Bu kural, temporarypage.html dosyasını geçici olarak newpage.html dosyasına yönlendirir.

2. Erişim Kontrolü ve Yetkilendirme

Belirli bir dizine şifre koruması (Basic Authentication) eklemek:

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/.htpasswd
Require valid-user

Bu ayar, belirli bir dizini kullanıcı adı ve şifre ile korur. Bu ayarın çalışması için .htpasswd dosyasının oluşturulması ve kullanıcı adı ile şifre bilgilerinin bu dosyada bulunması gerekir.

.htpasswd Dosyası Nasıl Kullanılır?

IP tabanlı erişim kontrolü:

Order Deny,Allow
Deny from all
Allow from 123.456.789.000

Bu kural, sadece belirli bir IP adresinden erişime izin verir.

3. Özel Hata Sayfaları

Özel bir 404 hata sayfası ayarlamak:

ErrorDocument 404 /custom_404.html

Bu ayar, 404 hatası alındığında kullanıcıyı custom_404.html sayfasına yönlendirir.

4. Dosya ve Dizin İndeksi Ayarları

Dizin listelemeyi kapatma:

Options -Indexes

Bu kural, dizin içeriğinin listelenmesini engeller.

Özel dizin listeleme:

Options +Indexes
IndexOptions FancyIndexing

Bu ayar, dizin listelemeyi açar ve listelemeyi daha şık hale getirir.

5. MIME Türleri Ayarları

MIME türleri belirleme:

AddType application/pdf .pdf
AddType application/x-shockwave-flash .swf

Bu kurallar, .pdf dosyalarını application/pdf ve .swf dosyalarını application/x-shockwave-flash olarak tanımlar.

6. Güvenlik İyileştirmeleri

Hotlink Koruması:

Başka sitelerin, sitenizdeki görselleri kullanmasını engellemek:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

Bu kural, başka sitelerden gelen isteklerin resim dosyalarınıza erişimini engeller.

Dosya türü erişim kontrolü:


    Order Allow,Deny
    Deny from all

Bu kural, belirli dosya türlerine erişimi kısıtlar.

7. Performans İyileştirmeleri

Gzip Sıkıştırma :

Web sitesi hızını artırmak için gzip sıkıştırması etkinleştirmek:

< IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
< /IfModule>

Bu ayar, belirli dosya türleri için gzip sıkıştırmasını etkinleştirir, bu da sayfa yükleme sürelerini iyileştirir.

Önbellekleme ayarları:


    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType text/css "access plus 1 week"
    ExpiresByType application/pdf "access plus 1 month"

Bu kurallar, belirli dosya türleri için tarayıcı önbellekleme sürelerini ayarlar.

8. Dil ve Karakter Seti Ayarları

Varsayılan dil ayarı:

AddDefaultCharset UTF-8

Bu ayar, varsayılan karakter setini UTF-8 olarak belirler.

9. Özel Yönlendirmeler

Mobil cihaz yönlendirmesi:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini" [NC]
RewriteRule ^$ http://m.example.com/ [L,R=302]

Bu kural, mobil cihazlardan gelen trafiği mobil sürüme yönlendirir.

Dil bazlı yönlendirme:

RewriteEngine On
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ /en/ [L,R=302]
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ /fr/ [L,R=302]

Bu kurallar, tarayıcı diline göre farklı sayfalara yönlendirir.

10. CORS Yapılandırması

Tüm Kökenlerden Gelen İsteklere İzin Verme


    Header set Access-Control-Allow-Origin "*"

Bu ayar, tüm kökenlerden gelen isteklere izin verir. Ancak bu, güvenlik açısından önerilmez, çünkü herhangi bir site sizin kaynaklarınıza erişebilir.

Belirli Bir Köken İçin CORS İzni Verme


    Header set Access-Control-Allow-Origin "http://example.com"

Bu ayar, sadece http://example.com kökeninden gelen isteklere izin verir.

Birden Fazla Köken İçin CORS İzni Verme

Ne yazık ki, Access-Control-Allow-Origin başlığı birden fazla kökeni doğrudan desteklemez. Ancak, dinamik olarak bu başlığı ayarlamak için bir çözüm kullanılabilir.


    RewriteEngine On
    RewriteCond %{HTTP:Origin} ^(http://example.com|http://another-example.com)$ [NC]
    RewriteRule .* - [E=ORIGIN:%{HTTP:Origin}]



    Header set Access-Control-Allow-Origin "%{ORIGIN}e" env=ORIGIN

Bu ayar, http://example.com ve http://another-example.com kökenlerinden gelen isteklere izin verir.

Preflight İsteklerine İzin Verme

Preflight istekleri (OPTIONS istekleri), tarayıcıların CORS isteklerini kontrol etmek için gönderdiği isteklere verilen yanıtlardır. Bunları .htaccess ile yapılandırmak için aşağıdaki ayarları kullanabilirsiniz.


    Header set Access-Control-Allow-Origin "*"
    Header set Access-Control-Allow-Methods "GET, POST, OPTIONS, DELETE, PUT"
    Header set Access-Control-Allow-Headers "X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding"


    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} OPTIONS
    RewriteRule ^(.*)$ $1 [R=200,L]

Bu ayar, tüm kökenlerden gelen isteklere izin verir ve belirli HTTP metodlarına (GET, POST, OPTIONS, DELETE, PUT) izin verir. Ayrıca, belirli başlıkların (X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding) kullanımına izin verir.

Bu ayarlar, .htaccess dosyasının nasıl kullanıldığını ve CORS yapılandırmasını nasıl yönettiğini göstermektedir. CORS yapılandırması yaparken, güvenlik ve işlevsellik arasında denge kurmak önemlidir. Belirli kökenlere izin vermek, genel izin vermekten daha güvenli bir yaklaşımdır.

11. Diğer Ayarlar

SSI (Server Side Includes) etkinleştirme:

Options +Includes
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

Bu ayar, sunucu tarafı dahil etmeleri etkinleştirir.

CGI ve Perl betikleri için ayarlar:

AddHandler cgi-script .cgi .pl
Options +ExecCGI

Bu kurallar, CGI ve Perl betikleri için özel ayarlar yapar.

.htaccess dosyası, web yöneticilerine sunucu yapılandırmalarını kolay ve hızlı bir şekilde yönetme olanağı tanır. Yukarıda verilen örnekler, .htaccess dosyasının ne kadar güçlü ve esnek bir araç olduğunu göstermektedir. Apache sunucusunda çalışan web siteleri için .htaccess dosyasının doğru ve güvenli bir şekilde kullanılması, sitenin performansı ve güvenliği açısından büyük önem taşır.

.htaccess Dosyasını Kullanarak HTTP istekleri HTTPS ye Nasıl Yönlendirilir?


  • Web Yazılım
  • Linux
  • Apache



Yorumlar
Sende Yorumunu Ekle
Kullanıcı
0 karakter