.htaccess dosyası, Apache web sunucusunu yapılandırmak için kullanılan güçlü bir araçtır. Bu dosya, web sitenizin davranışını özelleştirmenize ve güvenliğini artırmanıza olanak tanır. İşte .htaccess dosyanızda kullanabileceğiniz faydalı bazı kod parçaları ve bunların ne işe yaradığına dair açıklamalar:
İçindekiler
URL Yönlendirme
.htaccess dosyası ile URL’leri yönlendirebilirsiniz. Örneğin, “www” ön ekini kaldırmak veya belirli bir URL’yi başka bir sayfaya yönlendirmek için kullanabilirsiniz.
1 2 3 4 5 6 7 | # www ön ekini kaldır RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301] # Bir sayfayı başka bir sayfaya yönlendir Redirect 301 /eski-sayfa.html /yeni-sayfa.html |
Özelleştirilmiş Hata Sayfaları
Hata sayfalarınızı özelleştirmek için .htaccess’i kullanabilirsiniz.
1 2 3 4 5 | # 404 Sayfasını özelleştir ErrorDocument 404 /404.html # 500 Sayfasını özelleştir ErrorDocument 500 /500.html |
IP Adresi Tabanlı Erişim Kontrolü
Belirli IP adreslerine veya IP aralıklarına erişimi sınırlamak için kullanabilirsiniz.
1 2 3 4 5 6 7 8 | # Belirli bir IP adresine izin ver Allow from 192.168.1.100 # IP aralığına izin ver Allow from 192.168.1.0/24 # Belirli bir IP adresini engelle Deny from 123.45.67.89 |
Dosya Erişim Kontrolü
Belirli dosya türlerine veya dizinlere erişimi kontrol etmek için kullanabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 | # .htaccess dosyasına erişimi engelle <Files .htaccess> Order allow,deny Deny from all </Files> # .pdf uzantılı dosyalara erişimi engelle <FilesMatch "\.(pdf)$"> Order allow,deny Deny from all </FilesMatch> |
Hotlink Koruması
Diğer sitelerin kaynaklarını kullanmasını engellemek için hotlink koruması ekleyebilirsiniz.
1 2 3 4 5 | # Hotlink koruması RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example\.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L] |
Erişim Şifrelemesi (HTTPS)
Web sitenizin tamamını HTTPS ile erişime zorlamak için kullanabilirsiniz.
1 2 3 4 | # HTTPS ile erişimi zorla RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] |
Gzip Sıkıştırma
İçerik sıkıştırma ile sayfalarınızın daha hızlı yüklenmesini sağlayabilirsiniz. Bu özellikle büyük web siteleri için önemlidir.
1 2 3 4 | # Gzip sıkıştırma etkinleştir <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript </IfModule> |
Cache Kontrolü
Tarayıcı önbelleğini yönetmek için cache kontrolü kullanabilirsiniz.
1 2 3 4 | # Etki alanına özgü önbellek etkinleştirme <FilesMatch "\.(jpg|jpeg|png|gif|js|css)$"> Header set Cache-Control "max-age=604800, public" </FilesMatch> |
Oturum Yönetimi
Oturum yönetimi için .htaccess’i kullanabilirsiniz.
1 2 3 4 5 | # Oturum süresini artır php_value session.gc_maxlifetime 3600 # Oturum dosyalarını farklı bir dizine kaydet php_value session.save_path "/path/to/session/directory" |
Karakter Seti Ayarları
Karakter setini belirlemek ve sorunları önlemek için .htaccess‘i kullanabilirsiniz.
1 2 3 4 5 | # Karakter setini belirle AddDefaultCharset UTF-8 # Eğer karakter seti belirleme sorunları yaşıyorsanız AddCharset utf-8 .html |
Erişim Logları
Erişim loglarını özelleştirmek ve gizlemek için .htaccess’i kullanabilirsiniz.
1 2 3 4 5 6 | # Erişim loglarını gizle <FilesMatch "^access\.log$"> Order allow,deny Deny from all Satisfy All </FilesMatch> |
HTTP Başlığı Ekleme
HTTP başlıklarını ekleyerek güvenlik ve performansı artırabilirsiniz.
1 2 3 | # Güvenlik başlıkları ekleme Header set X-XSS-Protection "1; mode=block" Header set X-Content-Type-Options "nosniff" |
Dizin İndexi Ayarları
Dizin indeksini özelleştirmek ve güvenliği artırmak için .htaccess’i kullanabilirsiniz.
1 2 3 4 5 | # Dizin indeksini devre dışı bırak Options -Indexes # Özel bir dizin sayfası belirle DirectoryIndex custom.html |
Dosya İzinleri Kontrolü
Dosya izinlerini korumak için .htaccess kullanabilirsiniz.
1 2 3 4 5 | # İzin verilmeyen dosya türlerine erişimi engelle <FilesMatch "\.(ini|log|sh|inc|bak)$"> Order allow,deny Deny from all </FilesMatch> |
Dil ve Bölge Ayarları
Web sitenizin dil ve bölge ayarlarını .htaccess ile belirleyebilirsiniz.
1 2 3 4 5 6 7 | # Karakter kümesini belirle AddDefaultCharset UTF-8 # Dil ayarlarını belirle SetEnvIf Request_URI "^/tr/" prefer-language=tr SetEnvIf Request_URI "^/fr/" prefer-language=fr Header append Vary: Prefer-Language |
Dosya Yeniden Adlandırma
.htaccess ile dosya adlarını yeniden adlandırabilirsiniz.
1 2 3 | # .php uzantılı dosyaları .html olarak göster RewriteEngine On RewriteRule ^([^\.]+)\.html$ $1.php [NC,L] |
IP Tabanlı Redirection
Belirli IP adreslerini farklı bir sayfaya yönlendirmek için .htaccess’i kullanabilirsiniz.
1 2 3 | RewriteEngine On RewriteCond %{REMOTE_ADDR} ^123\.45\.67\.89$ RewriteRule ^$ /blocked.html [L] |
Geçici Bakım Modu
Web sitenizi geçici olarak bakım moduna almak için .htaccess kullanabilirsiniz.
1 2 3 4 5 | # Geçici bakım modu RewriteEngine on RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.89$ RewriteCond %{REQUEST_URI} !/bakim.html$ RewriteRule $ /bakim.html [R=302,L] |
Erişim Kontrolü ve Kimlik Doğrulama
Belirli sayfaları kimlik doğrulamaya tabi tutmak için .htaccess kullanabilirsiniz.
1 2 3 4 5 | # Kimlik doğrulamayı etkinleştir AuthType Basic AuthName "Giriş Yapın" AuthUserFile /path/to/.htpasswd Require valid-user |
Başka Bir Domain’e Yönlendirme
.htaccess ile başka bir domain’e yönlendirme yapabilirsiniz.
1 2 3 4 | # Başka bir domain'e yönlendirme RewriteEngine On RewriteCond %{HTTP_HOST} ^example\.com [NC] RewriteRule ^(.*)$ http://yeniexample.com/$1 [L,R=301] |
Önemli Not
Bu kod parçaları, .htaccess dosyasını kullanarak web sitenizin performansını artırabilir, güvenliğini sağlayabilir ve davranışını özelleştirebilirsiniz. Ancak, bu kodları kullanırken dikkatli olmalı ve her değişiklikten sonra web sitenizin doğru çalıştığını doğrulamalısınız. Ayrıca, sunucunuzun .htaccess dosyalarını destekleyip desteklemediğini kontrol etmelisiniz.