AnasayfaspaceHaberlerspaceYazılarspaceForumspaceBilgilerspaceYazılımspaceLinklerspaceResimlerspaceSitemapspace

Merhaba Misafir, Forumlarımıza hoşgeldiniz.

Üye olmak için burayı tıklamanız yeterli. Kayıt işlemi ücretsiz olup, konulara cevap yazabilmeniz için gereklidir.
Hatırla
Parolanız
   
Forum
 Internet, WWW, Web, Network / WWW, WEB, Site kurulumu ve araçları
        .htaccess nedir? .htaccess neye yarar, nasıl yönlendirme yapılır?

.htaccess nedir? .htaccess neye yarar, nasıl yönlendirme yapılır?


09.04.2007 18:01

kEditor


Administrator
Aktif Üye

Mesaj sayısı 162
 27.02.2007, 00:08:44
.htaccess, mod rewrite, .htpasswd, redirect, nohotlink, sınırlandırma, sunucu güvenliği

.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 sayfa gösteriminde htaccess dosyası sunucu tarafından kontrol edilir. .htaccess dosyasını düzenli tutun, kurallar arttıkça sunucunun dosyayı yorumlaması zorlaşacaktır. # kullanarak her bölüme fazla uzun olmamak kaydıyla açıklamalar yazın.

Bağlantı adreslerini (URL) yeniden tanımladığınızda veya bir önceki sayfaya yönlendiren kurallarda (Nohotlink örneği gibi) [L] özelliğini ekleyin. Bu sunucuya, diğer kuralları sorgulamadan bu kuralı uygulamamasını belirtir. .htaccess kurallarının alt klasörlerde de geçerli olduğunu, alt klasördeki .htaccess kuralının üst dizinde belirlediğiniz kuralları değiştirebileceğini gözardı etmeyin.

.htaccess hazırlamak

Basit bir text editörü (örneğin notepad++ gibi) ile yeni bir sayfa oluşturun. Sayfayı .htaccess ismiyle kaydedip, FTP üzerinden sunucunuzdaki ana dizine gönderin.

Not: Windows kullananlar dosyayı kaydederken hata mesajı alabilir. Hata mesajı aldığınızda, htaccess.txt olarak kaydedin. FTP üzerinden sunucuya yolladıktan sonra ".htaccess" olarak değiştirin.

.htaccess dosyalarında kullanılan kurallar ve kodları

Aşağıdaki kodlardan ihtiyacınıza uygun olanı alıp, .htaccess dosyasının içine yapıştırın.

Şifre Koruma ve htpasswd

Klasörler içerisinde şifre koruması sağlamak için .htaccess dosyası gibi, .htpasswd isminde yeni bir dosya oluşturup, içine alttaki kodları yapıştırın ve özelleştirin.

Kod

#
#Daha fazla bilgi: http://www.keditor.com
#
#Dosya yada klasör için şifreli koruma sağlamak
#Allow from xxx\\.xxx\\.xxx\\.xxx yazan yere server IP numarasını girin (ters slash, yani ' \' işaretlerini kaldırmadan)
#
##############################################
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ılması

.htaccess dosyasının açarak içine alttaki kodları ekleyin:

Kod
#
#Daha fazla bilgi: http://www.keditor.com
#
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# resim.gif, test.html, index.cgi uzantılarını php gibi gösterme
ForceType application/x-httpd-php
#SSLOptions +StrictRequire
#SSLRequireSSL
#SSLRequire %{HTTP_HOST} eq "google.com"
ErrorDocument 403 https://siteniz.com

#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\\.example\\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.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


.htaccess ile Charset ayarları yapmak

Kod
AddDefaultCharset UTF-8
# Or AddType 'text/html; charset=UTF-8' html
DefaultLanguage tr-TR
<Files ~ "\\.(htm|html|css|js|php)$">
AddDefaultCharset UTF-8
DefaultLanguage tr-TR
</Files>

#Alttaki aynı işi görür, tavsiye edilir
<FilesMatch "\\.(htm|html|css|js|php)$">
AddDefaultCharset UTF-8
DefaultLanguage tr-TR
</FilesMatch>


Hangi programlama dili kullandığınızı saklamak

Dosyaları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 .htm uzantılı dosyalar PHP dosyaları gibi işlenecektir.

Kod
# PHP uzantısını .htm gibi bir uzantı haline getirme
AddType application/x-httpd-php .htm


.htaccess'de PHP.ini ayarları yapma

Kod
AddHandler 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]
# Tüm gif uzantılı istemleri bir cgi uygulamasına yönlendirmek
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


Yedek dosyalarla hız artırımı

Kod
# 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>


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:

Kod
<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östermek

Ziyaretç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önlendirme

Kod
ErrorDocument 404 /favicon.ico
ErrorDocument 403 https://secure.siteniz.com/error.html
ErrorDocument 404 /error.html
ErrorDocument 400 /error.html
ErrorDocument 401 /error.html
ErrorDocument 403 /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

Kod
#
#http://www.keditor.com
#
##############################################
Options +ExecCGI -Indexes
DirectoryIndex index.php index.html index.htm

### VARSAYILANLAR ###
ServerSignature Off
AddType video/x-flv .flv
AddType application/x-shockwave-flash .swf
AddType image/x-icon .ico
AddDefaultCharset UTF-8

### CGI HIZLANDIRMA ###
AddHandler fastcgi-script fcgi
AddHandler php-cgi .php
Action php-cgi /cgi-bin/php5-wrapper.fcgi


Klasörlere erişimi engelleme

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

Kod
# Herkesten her dosyayı gizlemek
deny from all


Eğer bu klasöre yalnızca belirlediğiniz ip adresiyle erişilmesini istiyorsanız:

Kod
# Herkesten her dosyayı gizleyip sadece bir IP adresine izin verme
deny from all
allow from 10.0.0.1


Eğer bu klasöre yalnızca belirlediğiniz ip bloğunun erişmesini istiyorsanız:

Kod

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:

Kod
<Files ozeldosyam.html>
Order allow,deny
Deny from all
</Files>


Klasör listelemek

Bir klasördeki dosyaların listelenmesini istiyorsanız .htaccess dosyasına şu satırları yazınız:

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

Kod
IndexIgnore *


Sıkıştırma yaparak aylık trafik miktarını düşürme

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

Kod
<ifModule mod_php4.c>
php_value zlib.output_compression 16386
</ifModule>


Görünmesini istemediğiniz dosyaları gizlemek

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

Kod
<Files ~ “^\.ht”>
Order allow,deny
Deny from all
Satisfy All
</Files>


www olmadan site adresi desteği

Sitenizde www subdomain’inin kullanılmasına karşıysanız bu kod işinizi görecektir:

Kod
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{http_host} ^www\.siteniz\.com[nc]
RewriteRule ^(.*)$ http://siteniz.com/$1 [r=301,nc]
</ifModule>


HTML, HTM, PHP, ASP önceliğini belirleme

Öntanımlı sayfa bilgisini aşağıdaki şekilde, sıraya dikkat ederek değiştirebilirsiniz:

Kod
DirectoryIndex home.html index.htm index.html index.php


Zararlı bot’ları engellemek

Sitenizi kullanan veya tamamen indirmek isteyen bot’lara karşı .htaccess dosyasını kullanabilirsiniz:

Kod
<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>
Kullanıcı çevrimdışı Yazıcıya Gönder
 

Sayfayı yazdır  |  Önceki Konu  |  Sonraki Konu
Hızlı Menü
 




Forum istatistikleri
Konular:245, İletiler:330, Kullanıcılar:477
Aramıza en son katılan üyemiz, emray
Doğum Günü Olanlar
Bugün Doğum Günü Olan Arkadaşımız Yok.