.htaccess ve açıklamalarHTACCESS nedir, neye yarar, yönlendirme, sınırlandırma, güvenlik .htaccess (ingilizce= Hypertext Access) İnternet sayfaları için Apache serverlerde ayarlar yapmaya yarayan bir dosya türüdür. .htaccess ile güvenlik amacıyla dosyalara şifre koruma sağlayabilir, yönlendirmeleri istediğiniz bir sayfaya yapabilir, uzun php, asp yada diğer uzantılarda adres kısaltması yapmaya olanak verir. Apache'yi yada Server üzerinde yüklü olan işletim sistemini yeniden başlatmadan htaccess ile yaptığınız değişiklikler aktifleştiği için oldukça pratik çözümler bulunabilir. Server ayarlarının yapıldığı dosyalara ulaşılmadığı durumlarda (örn. httpd.confi php.ini gibi) bazen kurtarıcı rolünü üstlenir özellikler taşır. htaccess dosyasını olabildiğince küçük tutun. Çünkü her dosya isteğinde sunucu tarafından kontrol edilirler. .htaccess dosyasını düzenli tutun. Kurallar arttıkça dosyayı anlaması zorlaşacaktır. # kullanarak her bölüme açıklama yazın. URL’i yeniden tanımladığınız, bir önceki sayfaya yönlenen kurallarda (Nohotlink örneği gibi) [L] özelliğini ekleyin. Bu sunucuya, başka bir kuralı uygulamamasını belirtir. .htaccess kurallarının alt klasörlerde de geçerli olduğunu, alt klasördeki .htaccess kuralının ise üzerindeki kuralları değiştirebileceğini düşünün. .htaccess hazırlamak Basit bir text editörü ile yeni bir sayfa oluşturun. Sayfayı .htaccess ismiyle kaydedip, FTP üzerinden sunucunuzdaki ana dizine gönderin. Not: Windows kullananlar dosyayı kaydederken hata mesajı alabilirsiniz. Hata mesajı alıyorsanız, htaccess.txt olarak kaydedin. FTP üzerinden yolladıktan sonra "htaccess.txt" ismini ".htaccess" olarak değiştirin. .htaccess'le Kullanılan Kodlar Aşağıdaki kodları alıp, oluşturduğunuz .htaccess dosyasının içine yapıştırın: Şifre Koruma Şifre koruma için .htaccess dosyası oluşturduğumuz gibi, .htpasswd isminde yeni bir dosya oluşturup, içine alttaki kodalrı yapıştırın #Dosya yada klasör için şifreli koruma sağlamak için alttaki kodu kullanabilirsiniz: #Allow from xxx\\.xxx\\.xxx\\.xxx yazan yere server IP numarasını girin (ters slash, yani ' \' işaretlerini kaldırmadan) #Dosya yada klasör için şifreli koruma sağlamak için alttaki kodu kullanabilirsiniz: ######################## AuthName "sitenizimismi.com" AuthUserFile /home/sitenizinismi.com/.htpasswd AuthType basic Require valid-user Order deny,allow Deny from all Allow from xxx\\.xxx\\.xxx\\.xxx Allow from keditor.com Allow from googlebot.com Satisfy Any .htaccess ile rewrite yapımı.htaccess dosyasının içine alttaki kodları yapıştırın: Options +FollowSymLinks RewriteEngine On #RewriteBase / #Yonlendirme yapmak için eski/dosya1.html yazan yere eski adresi, /yeni/dosya2.html yazan yerer de yeni adresi yazınız. Redirect 301 /eski/dosya1.html http://www.sitenizinismi.com/yeni/dosya2.html #Birden çok adres yönlendirmesi RedirectMatch 301 /blog(.*) http://www.keditor.com/$1 Redirect 301 / http://www.yenisitenizinismi.com #Farkli bir domain ismi ile Redirect 301 / http://www.yenisitenizinismi.com # www isteme - yontem 1 RewriteCond %{REQUEST_URI} !^/robots\\.txt$ RewriteCond %{HTTP_HOST} !^www\\.orneksite\\.com$ [NC] RewriteRule ^(.*)$ http://www.orneksite.com/$1 [R=301,L] # www isteme - yontem 2 RewriteCond %{REQUEST_URI} !^/robots\\.txt$ [NC] RewriteCond %{HTTP_HOST} !^www\\.[a-z-]+\\.[a-z]{2,6} [NC] RewriteCond %{HTTP_HOST} ([a-z-]+\\.[a-z]{2,6})$ [NC] RewriteRule ^/(.*)$ http://%1/$1 [R=301,L] #subdomain istememek - 1 RewriteCond %{HTTP_HOST} \\.([a-z-]+\\.[a-z]{2,6})$ [NC] RewriteRule ^/(.*)$ http://%1/$1 [R=301,L] #subdomain istememek - 2 RewriteCond %{HTTP_HOST} \\.([^\\.]+\\.[^\\.0-9]+)$ RewriteCond %{REQUEST_URI} !^/robots\\.txt$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] #Ip adrese gore yonlendirme - 1 ErrorDocument 403 http://www.baskasite.com Order deny,allow Deny from all Allow from xxx.xxx.xxx.xxx www olmadan site adresi desteği www subdomain’inin kullanılmasına karşıysanız bu kod işinizi görecektir: <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine on RewriteCond %{http_host} ^www\.siteniz\.com[nc] RewriteRule ^(.*)$ http://siteniz.com/$1 [r=301,nc] </ifModule> .htaccess ile Charset ayarları yapmakAddDefaultCharset UTF-8 # Or AddType 'text/html; charset=UTF-8' html DefaultLanguage tr-TR Using the Files Directive <Files ~ "\\.(htm|html|css|js|php)$"> AddDefaultCharset UTF-8 DefaultLanguage tr-TR </Files> Using the FilesMatch Directive (preferred) <FilesMatch "\\.(htm|html|css|js|php)$"> AddDefaultCharset UTF-8 DefaultLanguage tr-TR </FilesMatch> Hangi programlama dili kullandığınızı saklamakDosyalarınızın uzantılarını değiştirip .htaccess dosyasına bir kural ekleyerek hangi dili kullandığınızı ziyaretçilerinizden saklayabilirsiniz. Aşağıdaki örnek sayesinde .133t uzantılı dosyalar PHP dosyaları gibi işlenecektir. # Make PHP code look like unknown types AddType application/x-httpd-php .133t .htaccess ile PHP.ini ayarları yapmaAddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi Options -ExecCGI Options -ExecCGI -Indexes -All +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{REQUEST_METHOD} !^(GET|PUT) RewriteRule .* - [F] Processing All gif files to be processed through a cgi script Action image/gif /cgi-bin/filter.cgi Script PUT /cgi-bin/upload.cgi AddType application/octet-stream .avi AddType application/octet-stream .mpg RemoveHandler cgi-script .pl .py .cgi Resim ve diğer dosyaların başka bir sitede görünmesini engelleme (NoHotlinking):Hotlinking basitçe sizin sitenizdeki bir resmi, müzik dosyasını, videoyu başka bir sitenin göstermesine denir. Bu durumda olan sizin bandwidth’inize olur. Örnek olarak sitenizin dışında kullanılan bazı dosyalara erişimi engelleyip error.gif adında bir resim dosyası gönderen şu kodu uygulayabilirsiniz: <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\\.)?siteniz.com/.*$ [NC] RewriteRule \\.(gif|jpg|swf|flv|png|zip|mp3|avi|wmv|mpg|mpeg)$ http://www.siteniz.com/error.gif [R=302,L] </ifModule> Kod basitçe siteniz.com dışından çağırılan zip, mp3 ve bazı video dosyaları yerine error.gif dosyasını gösteriyor. Not: Eğer resim hotlink’lerini engellerseniz site dışından istenen tüm resimleri engelleyeceksiniz. Bu durumda mesela feedburner gibi bir hizmet kullanıyorsanız bu hizmet için kodunuzu değiştirmeniz gerekecektir. Kendinize özel HTTP 404 hata sayfası göstermekZiyaretçileriniz “404: Sayfa Bulunamadı” hatasıyla karşılaşacaklarında sizin istediğiniz bir dosyaya yönlenmelerini sağlamak için aşağıdaki kodları kullanın. Not: Internet Explorer 512 bayttan küçük hata sayfalarıyla karşılaştığında, MSN search gibi bağlantıların bulunduğu kendi hata sayfasını kullanıcıya göstermektedir. Belirttiğiniz hata sayfasının 512B’tan büyük olduğuna emin olun. Hata Sayfalarına yönlendirmeErrorDocument 400 /error.html ErrorDocument 401 /error.html ErrorDocument 403 /error.html ErrorDocument 404 /error.html ErrorDocument 405 /error.html ErrorDocument 406 /error.html ErrorDocument 409 /error.html ErrorDocument 413 /error.html ErrorDocument 414 /error.html ErrorDocument 500 /error.html ErrorDocument 501 /error.html Varsayılan ayarlar # #http://www.keditor.com # ############################################## Options +ExecCGI -Indexes DirectoryIndex index.php index.html index.htm ServerSignature Off AddType video/x-flv .flv AddType application/x-shockwave-flash .swf AddType image/x-icon .ico AddDefaultCharset UTF-8 DefaultLanguage en-US SetEnv TZ America/Indianapolis SetEnv SERVER_ADMIN webmaster@^^SITE^^.^^TLD^^ ### CGI HIZLANDIRMA ### AddHandler fastcgi-script fcgi AddHandler php-cgi .php Action php-cgi /cgi-bin/php5-wrapper.fcgi .htaccess ile klasörlere erişimi engellemeBir klasöre tüm erişimi engellemek istiyorsanız (program kaynak kodlarınızı barındıran bir klasörünüz olabilir; bu durumda klasöre internetten değil, yalnızca dosya sisteminden erişmeyi isteyebilirsiniz) klasörün içinde .htaccess dosyası oluşturup içine alttaki kodları ekleyin: #deny all access deny from all Eğer bu klasöre yalnızca belirlediğiniz ip adresiyle erişilmesini istiyorsanız: #deny all access deny from all allow from 10.0.0.1 # tek ip adresi Eğer bu klasöre yalnızca belirlediğiniz ip bloğunun erişmesini istiyorsanız: #deny all access deny from all allow from 192.168.0.0/24 # ip bloğu Tek bir dosyaya erişimi engellemek için ise yazmanız gereken: <Files ozeldosyam.html> Order allow,deny Deny from all </Files> Klasör içeriğini listelemek Bir klasördeki dosyaların listelenmesini istiyorsanız .htaccess dosyasına şu satırları yazınız: Options +Indexes +MultiViews +FollowSymlinks <ifmodule mod_autoindex.c> IndexOptions FancyIndexing </ifmodule> Not: Bunun için sunucunuzda autoindex modülünün yüklü olması gerekiyor. Klasördeki öntanımlı listelemeyi iptal etmek için ise şu satır yeterli: IndexIgnore * Sıkıştırma yaparak aylık trafik miktarını düşürmeSitenizin bant genişliğini (bandwidth) korumak için bir php özelliği olan zlib'i (veri sıkıştırma) kullanabilirsiniz. .htaccess dosyasına şunu eklemelisiniz: <ifModule mod_php4.c> php_value zlib.output_compression 16386 </ifModule> Yedek dosyalarla hız artırımı # AY <FilesMatch "\\.(flv|gif|jpg|jpeg|png|ico|swf)$"> Header set Cache-Control "max-age=2592000" </FilesMatch> # HAFTA <FilesMatch "\\.(js|css|pdf|txt)$"> Header set Cache-Control "max-age=604800" </FilesMatch> # GUN <FilesMatch "\\.(html|htm)$"> Header set Cache-Control "max-age=43200" </FilesMatch> Görünmesini istemediğiniz dosyaları gizlemekBelirli dosyalara erişimi engellemek için "Files" komutuyla birlikte Regular Expression kullanabilirsiniz. Örnek olarak konfigürasyon dosyalarına, robot.txt’e veya log’lara erişimi engellemek isteyebilirsiniz. Aşağıdaki örnek, o klasördeki .ht ile başlayan dosyalara erişimi engellemektedir. <Files ~ “^\.ht”> Order allow,deny Deny from all Satisfy All </Files> HTML, HTM, PHP, ASP önceliğini belirleme Öntanımlı sayfa bilgisini aşağıdaki şekilde, sıraya dikkat ederek değiştirebilirsiniz: DirectoryIndex home.html index.htm index.html index.php CHMOD chmod haklarını (dosya imtiyazları) belirlerken.htpasswd dosyaları için 640, .htaccess dosyaları için 644, php dosyaları 600, hiç görülmemesini istediğiniz dosyalar için 400, herkese görünmesini istediğiniz dosyalar için 777kullanın. Variable (mod_env) Magic Set the Timezone of the server: SetEnv TZ Europa/Berlin Set the Server Administrator Email: SetEnv SERVER_ADMIN webmaster@siteniz.com Turn off the ServerSignature ServerSignature Off Zararlı bot’ları engellemek Sitenizi kullanan veya tamamen indirmek isteyen bot’lara karşı .htaccess dosyasını kullanabilirsiniz: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR] RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR] RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR] RewriteCond %{HTTP_USER_AGENT} ^Custo [OR] RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR] RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR] RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR] RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR] RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR] RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR] RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR] RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR] RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR] RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR] RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR] RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR] RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR] RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR] RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR] RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR] RewriteCond %{HTTP_USER_AGENT} ^HMView [OR] RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR] RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR] RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR] RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR] RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR] RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR] RewriteCond %{HTTP_USER_AGENT} ^larbin [OR] RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR] RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR] RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR] RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR] RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR] RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR] RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR] RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR] RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR] RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR] RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR] RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR] RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR] RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR] RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR] RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR] RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR] RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR] RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR] RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR] RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR] RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR] RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR] RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR] RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR] RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR] RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR] RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR] RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR] RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR] RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR] RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR] RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR] RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR] RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR] RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR] RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR] RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR] RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR] RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR] RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR] RewriteCond %{HTTP_USER_AGENT} ^Wget [OR] RewriteCond %{HTTP_USER_AGENT} ^Widow [OR] RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR] RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR] RewriteCond %{HTTP_USER_AGENT} ^Zeus RewriteRule .* - [F] </ifModule> |
|