<-
Apache > HTTP Sunucusu > Belgeleme > Sürüm 2.4

Yap?land?rma B?lümleri

Mevcut Diller:  en  |  fr  |  ja  |  ko  |  tr 

Yap?land?rma dosyalar?ndaki y?nergeler sunucunun tamam?na uygulanaca?? gibi sadece belli dizinler, dosyalar, konaklar veya URL’lere uygulanmakla s?n?rlanabilir. Bu belgede, yap?land?rma b?lümü ta??y?c?lar?n?n?n veya .htaccess dosyalar?n?n, yap?land?rma dosyalar?ndaki di?er y?nergelerin etki alanlar?n? de?i?tirtirmek i?in nas?l kullan?laca?? a??klanm??t?r.

Support Apache!

Ayr?ca bak?n?z:

top

Yap?land?rma B?lümü Ta??y?c?lar?n?n Türleri

?ki temel ta??y?c? türü vard?r. Ta??y?c?lar?n ?o?u her istek i?in de?erlendirmeye al?n?r. Ta??y?c?lardaki y?nergeler ise sadece bu ta??y?c?larla e?le?en istekler i?in uygulan?r. Di?er yandan, <IfDefine>, <IfModule> ve <IfVersion> ta??y?c?lar? sadece sunucu ba?lat?l?rken veya yeniden ba?lat?l?rken de?erlendirmeye al?n?r. Ba?latma s?ras?nda gerektirdikleri ko?ullar sa?lan?yorsa i?erdikleri y?nergeler tüm isteklere uygulan?r. Aksi takdirde, i?erdikleri y?nergeler yok say?l?r.

<IfDefine> y?nergesi sadece httpd komut sat?r?nda uygun parametreler tan?mlanm??sa uygulanabilecek y?nergeleri i?erir. ?rne?in, a?a??daki yap?land?rma ile tüm isteklerin di?er siteye y?nlendirilebilmesi sadece sunucu httpd -DClosedForNow komut sat?r? ile ba?lat?ld??? takdirde mümkün olur:

<IfDefine ClosedForNow>
  Redirect "/" "http://otherserver.example.com/"
</IfDefine>

<IfModule> y?nergesi sadece belli bir modülün sunucuda kullan?labilir durumda olmas? halinde uygulanabilecek y?nergeleri i?erir. Modülün ya sunucuyla birlikte dura?an olarak derlenmi? olmas? ya da devingen olarak derlenmi? ve yap?land?rma dosyas?nda y?nergeden ?nce o modüle ili?kin bir LoadModule sat?r?n?n bulunmas? gerekir. Bu y?nergeyi sadece belli bir modülün varl???n?n veya yoklu?unun yap?land?rma dosyan?z?n ?al??mas?n? etkilememesini istedi?iniz durumlarda kullanmal?s?n?z. Eksik modüllerle ilgili hata iletilerini engelledi?inden, ta??y?c? i?ine, her zaman ?al??mas? istenen y?nergeler konulmamal?d?r.

A?a??daki ?rnekte, MimeMagicFile y?nergesi sadece mod_mime_magic modülü mevcutsa uygulanacakt?r.

<IfModule mod_mime_magic.c>
  MimeMagicFile "conf/magic"
</IfModule>

<IfVersion> y?nergesi sunucunun belli bir sürümünün ?al??t?r?lmas? halinde uygulanabilecek y?nergeleri i?erebilmesi d???nda <IfDefine> ve <IfModule> y?nergeleri gibidir. mod_version modülü farkl? httpd sürümleri ve farkl? yap?land?rmalarla büyük a?larda ?al??may? mümkün k?lmak veya sürüm denemeleri yapabilmek amac?yla tasarlanm??t?r.

<IfVersion >= 2.4>
  # buras? sadece 2.4.0 veya daha üstü sürümlerde
  # i? g?rür.
</IfVersion>

<IfDefine>, <IfModule> ve <IfVersion> y?nergelerinin ?nüne "!" konularak olumsuz ko?ullar i?in uygulanabilir. Ayr?ca, bu b?lümler daha karma??k s?n?rlamalar elde etmek amac?yla bir di?erinin i?inde kullan?labilirler.

top

Dosya Sistemi, Site Alan? ve Mant?ksal ?fadeler

En s?k kullan?lan yap?land?rma b?lümü ta??y?c?lar? dosya sistemindeki veya site alan?ndaki belli yerlerin yap?land?rmalar?n? de?i?tirmekte kullan?lanlard?r. ?ncelikle, bu ikisi aras?ndaki farklar? bilmek ?nemlidir. Dosya sistemi disklerinizin i?letim sistemi taraf?ndan size g?sterilen halidir. ?rne?in, ?ntan?ml? kurulumda Apache httpd, Unix sistemlerinde /usr/local/apache2 alt?ndayken Windows sistemlerinde "c:/Program Files/Apache Group/Apache2" alt?ndad?r. (Bilgi: Windows i?in bile, Apache httpd yap?land?rma dosyalar?nda dosya yolu belirtilirken tersb?lü de?il normal b?lü karakterleri kullan?l?r.) Site alan? ise sunucu taraf?ndan istemciye sunulan dizin a?ac?d?r. Yani, site alan? i?indeki /dir/ dizini, Apache httpd’nin Unix üzerinde dosya sistemine ?ntan?ml? olarak kuruldu?u yer g?z ?nüne al?narak, dosya sistemindeki /usr/local/apache2/htdocs/dir/ dizinine kar??l?kt?r. Site sayfalar? veritabanlar?ndan veya ba?ka yerlerden devingen olarak üretilebildi?inden site alanlar?n?n do?rudan dosya sistemine e?lenmesi gerekli de?ildir.

Dosya Sistemi Ta??y?c?lar?

<Directory> ve <Files> ta??y?c?lar?, düzenli ifade kar??l?klar? ile beraber, y?nergeleri dosya sisteminin par?alar?na uygularlar. Bir <Directory> b?lümü i?indeki y?nergeler belli bir dosya sistemi dizinine ve onun alt dizinlerine uygulan?r. Ayn? etki .htaccess dosyalar? kullan?larak da sa?lanabilir. ?rne?in a?a??daki yap?land?rmada, /var/web/dir1 dizini ve alt dizinlerinde dizin i?eri?inin listelenmesi etkin k?l?nmaktad?r.

<Directory "/var/web/dir1">
  Options +Indexes
</Directory>

Bir <Files> b?lümü i?indeki y?nergeler, hangi dizinde bulundu?una bak?lmaks?z?n ismi belirtilen dosyalara uygulan?r. ?rne?in, a?a??daki yap?land?rma y?nergeleri yap?land?rma dosyas?n?n ana b?lümüne yerle?tirildi?i takdirde gizli.html isimli dosyalara nerede bulunursa bulunsun eri?ime izin vermeyecektir.

<Files "gizli.html">
  Require all denied
</Files>

Dosya sisteminin belli bir yerindeki belli dosyalarla ilgili yapt?r?mlar i?in <Files> ve <Directory> b?lümleri birlikte kullan?labilir. ?rne?in, a?a??daki yap?land?rma /var/web/dir1/gizli.html, /var/web/dir1/subdir2/gizli.html, /var/web/dir1/subdir3/gizli.html ve /var/web/dir1/ alt?nda bulunabilecek di?er tüm gizli.html dosyalar?na eri?imi yasaklar.

<Directory "/var/web/dir1">
<Files "gizli.html">
Require all denied </Files>
</Directory>

Site Alan? Ta??y?c?lar?

<Location> y?nergesi ve y?nergenin düzenli ifade kar??l??? site alan?ndaki i?erik i?in yap?land?rmay? de?i?tirir. ?rne?in a?a??daki yap?land?rma, /gizli ile ba?layan URL yollar?na eri?imi engeller. ?zellikle, http://siteniz.mesela.dom/gizli, http://siteniz.mesela.dom/gizli123 ve http://siteniz.mesela.dom/gizli/dir/dosya.html istekleri yan?nda /gizli ile ba?layan di?er isteklere de uygulan?r.

<LocationMatch "^/gizli">
    Require all denied
</LocationMatch>

Dosya sistemi ile etkile?ime girmeyen her?ey i?in <Location> y?nergesi gerekir. A?a??daki ?rnekte, belli bir URL’nin mod_status modülü taraf?ndan sa?lanan bir dahili Apache eylemcisine nas?l e?lenebilece?i g?sterilmi?tir. Bu ?rnek i?in dosya sisteminde server-status ad?nda bir dosya veya dizin bulunmas? gerekli de?ildir.

<Location "/server-status">
    SetHandler server-status
</Location>

Site Alan?nda ?ak??ma

Belli b?lümler ve y?nergeler de?erlendirilirken ?ak??an iki URL bir URL olarak dikkate al?n?r. <Location> y?nergesi i?in bu ??yle olurdu:

<Location "/foo">
</Location>
<Location "/foo/bar">
</Location>

Di?er yandan <Takma adlar> tam tersi e?lenir:

Alias "/foo/bar" "/srv/www/uncommon/bar"
Alias "/foo"     "/srv/www/common/foo"

Ayn?s? ProxyPass y?nergeleri i?in de ge?erlidir:

ProxyPass "/special-area" "http://special.example.com" smax=5 max=10
ProxyPass "/" "balancer://mycluster/" stickysession=JSESSIONID|jsessionid nofailover=On

Dosya Ad? ?ablonlar? ve Düzenli ?fadeler

<Directory>, <Files> ve <Location> y?nergelerinde, Standart C kütüphanesindeki fnmatch i?levindeki gibi kabuk tarz? dosya ismi kal?plar? kullan?labilir. "*" karakteri herhangi bir karakter dizisi ile e?le?irken "?" karakteri tek tek karakterlerle ve "[seq]" kal?b? ise seq i?indeki her karakterle e?le?ir. "/" karakteri her hangi bir kal?p karakteri ile e?le?mez; a??k?a belirtilmesi gerekir.

Daha esnek bir e?le?menin gerekli oldu?u durumlar i?in her ta??y?c?n?n bir düzenli ifade kar??l??? vard?r. <DirectoryMatch>, <FilesMatch> ve <LocationMatch> y?nergelerinde gerekli e?le?meleri se?mek i?in perl uyumlu düzenli ifadelerin kullan?m?na izin verilir. Ayr?ca, y?nergelerin uygulan???n?n düzenli ifade b?lümleri kullan?larak nas?l de?i?tirilece?ini ??renmek i?in, a?a??da, yap?land?rman?n kat??t?r?lmas?yla ilgili b?lüme de bak?n?z.

Tüm kullan?c? dizinlerine ili?kin yap?land?rmay? de?i?tirmek i?in dosya ismi kal?plar? ??yle kullan?labilirdi:

<Directory "/home/*/public_html">
    Options Indexes
</Directory>

Düzenli ifade b?lümleri kullanarak ?e?itli türlerdeki resim dosyalar?na eri?imi bir defada yasaklayabiliriz:

<FilesMatch "\.(?i:gif|jpe?g|png)$">
    Require all denied
</FilesMatch>

?simli gruplar ve geriye ba?vurular i?eren düzenli ifadeler ortama eklenirken ilgili isimler büyük harfli yap?l?r. B?ylece, URL'lere ve dosya yollar? elemanlar?na ifadelerin i?inden ve mod_rewrite gibi modüllerden ba?vurmak mümkün olur.

<DirectoryMatch "^/var/www/combined/(?<SITENAME>[^/]+)">
    require ldap-group "cn=%{env:MATCH_SITENAME},ou=combined,o=Example"
</DirectoryMatch>

Mant?ksal ?fadeler

<If> y?nergesi bir mant?ksal ifade olarak belirtilebilen bir kurala ba?l? olarak yap?land?rmay? de?i?tirebilir. ?rne?in, a?a??daki yap?land?rmada, HTTP Referer ba?l??? "http://www.example.com/" ile ba?lam?yorsa eri?imi yasaklar.

<If "!(%{HTTP_REFERER} -strmatch 'http://www.example.com/*')">
    Require all denied
</If>

Ne, Ne Zaman Kullan?l?r?

Dosya sistemi ta??y?c?lar? ile site alan? ta??y?c?lar? aras?nda se?im yapmak asl?nda olduk?a kolayd?r. Dosya sisteminde bulunan nesnelere uygulanacak y?nergeler i?in daima <Directory> veya <Files> kullan?l?r. Dosya sisteminde bulunmayan nesnelere (bir sayfan?n bir veritaban? taraf?ndan üretilmesi gibi) uygulanacak y?nergeler i?in ise <Location> kullan?l?r.

Dosya sistemindeki nesnelere eri?imi k?s?tlarken asla <Location> kullanmamak ?nemlidir. Bunun sebebi farkl? site alan? konumlar?n?n (URL’ler) ayn? dosya sistemi konumuna e?lenebilmesi dolay?s?yla k?s?tlamalar?n?z?n etraf?ndan dola??labilmesine izin vermesidir. ?rne?in, a?a??daki yap?land?rmay? ele alal?m:

<Location "/dir/">
    Require all denied
</Location>

http://siteniz.mesela.dom/dir/ i?in bir istek yap?lm??sa bu do?ru ?al??acakt?r. Fakat dosya sistemi harf büyüklü?üne duyars?zsa ne olacak? K?s?tlaman?z, istek http://siteniz.mesela.dom/DIR/ ?eklinde yap?larak kolayca ge?ersiz k?l?nabilir. Halbuki <Directory> y?nergesi iste?in nas?l yap?ld???na bak?lmaks?z?n bu konumdan sunulan her türlü i?eri?e uygulanacakt?. (Dosya sistemi ba?lar?yla bu da a??labilir. Sembolik ba?lar kullan?larak ayn? dizin dosya sisteminin bir ?ok yerine yerle?tirilebilir. <Directory> y?nergesi dosya yolunu s?f?rlamaks?z?n sembolik ba?lar? izleyecektir. Bu bak?mdan, en yüksek seviyede güvenlik i?in uygun Options y?nergesi ile sembolik ba?lar?n izlenmesi devred??? b?rak?labilir.)

Belki de siz s?rf harf büyüklü?üne duyarl? bir dosya sistemi kullan?yorsunuz diye b?yle uygulamalara ihtiyac?n?z olmad???n? dü?ünüyor olabilirsiniz, fakat ayn? site alan?n? ?ok say?da dosya sistemi konumuna e?leyecek daha bir sürü yol bulundu?unu unutmay?n?z. Bu bak?mdan dosya sisteminde yapaca??n?z k?s?tlamalarda daima dosya sistemi ta??y?c?lar?n? kullanmal?s?n?z. Bununla birlikte bu kural?n da bir istisnas? vard?r. Yap?land?rma k?s?tlamalar?n?n bir <Location "/"> b?lümü i?ine koyulmas?, bu b?lüme konan y?nergelerin etki alan?n?n belli bir URL ile s?n?rl? olmamas? nedeniyle mükemmelen güvenlidir.

B?lüm i? i?eli?i

Baz? b?lüm türleri ba?ka b?lüm türlerinin i?inde olabilir. Bir yandan, <Files> b?lümü <Directory> b?lümünün i?inde bulunabilirken di?er yandan bir <If> b?lümü <Directory>, <Location> ve <Files> b?lümlerinde bulunabilir fakat ba?ka bir <If> b?lümünün i?inde bulunamaz. Bu b?lümlerin düzenli ifadeli türevleri de benzer tarzda davran?r.

?? i?e b?lümler, ayn? türdeki i? i?e olmayan b?lümlerin sonras?na yerle?tirilir.

top

Sanal Konaklar

<VirtualHost> ta??y?c?s?n?n i?inde belli bir kona?a uygulanan y?nergeler bulunur. Ayn? makinede ?ok say?da kona?? farkl? yap?land?rmalarla sunuyorsan?z bu ta??y?c? ?ok i?inize yarar. Daha fazla bilgi i?in Sanal Konak Belgeleri b?lümüne bak?n?z.

top

Vekil

<Proxy> ve <ProxyMatch> ta??y?c?lar?, sadece belli bir URL ile e?le?en mod_proxy vekil sunucusu üzerinden eri?ilen sitelere uygulanan yap?land?rma y?nergelerini bulundururlar. ?rne?in a?a??daki yap?land?rma example.com sitesine eri?im i?in vekil sunucunun sadece a?daki baz? kullan?c?lar taraf?ndan kullan?labilmesini sa?layacakt?r.

<Proxy "http://www.example.com/*">
    Require host bizimki.example.com
</Proxy>
top

Hangi Y?nergelere ?zin Veriliyor?

Hangi y?nergelere hangi yap?land?rma b?lümlerinde izin verildi?ini ??renmek i?in y?nerge ba?lam?na bak?n?z. <Directory> b?lümlerinde izin verilen her?eye s?zdizimsel olarak ayr?ca <DirectoryMatch>, <Files>, <FilesMatch>, <Location>, <LocationMatch>, <Proxy> ve <ProxyMatch> b?lümlerinde de izin verilir. Yine de baz? istisnai durumlar mevcuttur:

top

B?lümler Nas?l Kat??t?r?l?r?

Yap?land?rma b?lümleri belli bir s?ra ile uygulan?r. Yap?land?rma y?nergelerinin yorumlan??? üzerinde ?nemli etkilere sahip olabilmesi nedeniyle neyin ne zaman ?al??t???n? anlamak ?ok ?nemlidir.

Yap?land?rma b?lümlerinin kat??t?r?lma s?ras? ??yledir:

  1. <Directory> (düzenli ifadeler hari?) ve .htaccess ayn? anda i?leme sokulur (.htaccess ile e?er izin verilmi?se <Directory> i?indeki baz? y?nergeler ge?ersiz k?l?nabilece?i i?in).
  2. <DirectoryMatch> (ve <Directory "~">).
  3. <Files> ve <FilesMatch> ayn? anda i?leme sokulur.
  4. <Location> ve <LocationMatch> ayn? anda i?leme sokulur.
  5. <If>

Baz? ?nemli durumlar:

Baz? Teknik Bilgiler

Asl?nda, isim d?nü?üm a?amas?ndan (Aliases ve DocumentRoots, URL’leri dosya isimlerine e?lemek i?in kullan?l?rken) hemen ?nce uygulanan bir <Location>/<LocationMatch> dizisi vard?r. Bu dizinin sonu?lar? isim d?nü?üm a?amas? tamamland?ktan sonra tamamen elden ??kar?l?r.

Modüllerle yap?land?rma b?lümleri aras?ndaki ili?ki

Yap?land?rma b?lümlerini okurken ?rne?in mod_rewrite gibi belli modüllerin y?nergelerinin bu b?lümlere nas?l kat?laca?? ve ne zaman nas?l i?lenece?i gibi sorular s?k?a akl?m?zdan ge?er. Bunun belli bir yan?t? yoktur ve biraz temel bilgi gerektirir. Her httpd modülü yap?land?rmas?n? kendi y?netir ve apache2.conf i?indeki y?nergelerinin her biri belli bir ba?lamdaki bir yap?land?rmay? belirtir. httpd bir komutu okundu?u s?rada ?al??t?rmaz.

?al??ma an?nda, httpd ?ekirde?i ge?erli iste?e hangilerinin uygulanaca??n? belirlemek i?in yukar?da a??klanan s?rada tan?ml? yap?land?rma b?lümlerini tekrar tekrar okur. E?le?en ilk b?lümün bu istek i?in ge?erli yap?land?rmay? i?erdi?i varsay?l?r. E?er alt b?lümlerden biri de e?le?mi?se bu b?lümlerde y?nergeleri bulunan her modüle yap?land?rmas?n? iki b?lüm aras?nda kat??t?rma ?ans? verilir. Sonu? ü?üncü bir yap?land?rma olup i?lem bütün yap?land?rma b?lümleri de?erlendirilene kadar sürer.

Yukar?daki ad?mlar?n ard?ndan HTTP iste?iyle ilgili "as?l" i?lem ba?lar: her modül ondan istenen g?revleri ger?ekle?tirme ?ans?na sahip olur. Nas?l davranacaklar?n? belirlemek i?in kendilerinin kat??t?r?lm?? son yap?land?rmalar?n? http ?ekirde?inden alabilirler.

Sürecin tamam? bir ?rnekle g?rselle?tirilebilir. A?a??daki ?rnekte belli bir HTTP ba?l???n? ayarlamak i?in mod_headers modülünün Header y?nergesi kullan?lm??t?r. /example/index.html iste?i i?in httpd CustomHeaderName ba?l???na hangi de?eri atayacakt?r?

<Directory "/">
    Header set CustomHeaderName bir
    <FilesMatch ".*">
        Header set CustomHeaderName yedi
    </FilesMatch>
</Directory>

<Directory "/example">
    Header set CustomHeaderName iki
</Directory>

Directory ile ayn? kat??t?rma s?ras?ndan dolay? bu durum .htaccess i?in de ge?erlidir. Burada anla??lmas? gereken husus, Directory ve FilesMatch gibi yap?land?rma b?lümlerinin Header veya RewriteRule gibi modüle ?zgü y?nergelerle kar??la?t?r?lmamas?d?r, ?ünkü bunlar farkl? seviyelerde i?lem g?rür.

Baz? ?rnekler

A?a??daki yapay ?rnekte kat??t?rma s?ras? g?sterilmi?tir. Hepsinin ayn? iste?e uyguland??? varsay?m?yla, bu ?rnekteki y?nergeler A > B > C > D > E s?ras?yla uygulanacakt?r.

<Location "/">
    E
</Location>

<Files "f.html">
    D
</Files>

<VirtualHost *>
    <Directory "/a/b">
        B
    </Directory>
</VirtualHost>

<DirectoryMatch "^.*b$">
    C
</DirectoryMatch>

<Directory "/a/b">
    A
</Directory>

Daha somut bir ?rnek olarak a?a??dakini ele alal?m. <Directory> b?lümlerindeki eri?im s?n?rlamalar? ne olursa olsun <Location> b?lümü son olarak de?erlendirmeye al?nacak ve sunucuya s?n?rs?z eri?im verecektir. Ba?ka bir deyi?le, kat??t?rma s?ras? ?nemlidir, bu nedenle dikkatli olmal?s?n?z!

<Location "/">
    Require all granted
</Location>

# Alooo!  Bu <Directory> b?lümünün hi?bir hükmü yok.
<Directory "/">
    <RequireAll>
        Require all granted
        Require not host kkadam.example.com
    </RequireAll>
</Directory>

Mevcut Diller:  en  |  fr  |  ja  |  ko  |  tr 

top

Yorum

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.
白小姐透特期期