1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.tr.xsl"?>
4 <!-- English Revision: 1731194 -->
5 <!-- =====================================================
6 Translated by: Nilgün Belma Bugüner <nilgun belgeler.gen.tr>
7 Reviewed by: Orhan Berent <berent belgeler.gen.tr>
8 ========================================================== -->
11 Licensed to the Apache Software Foundation (ASF) under one or more
12 contributor license agreements. See the NOTICE file distributed with
13 this work for additional information regarding copyright ownership.
14 The ASF licenses this file to You under the Apache License, Version 2.0
15 (the "License"); you may not use this file except in compliance with
16 the License. You may obtain a copy of the License at
18 http://www.apache.org/licenses/LICENSE-2.0
20 Unless required by applicable law or agreed to in writing, software
21 distributed under the License is distributed on an "AS IS" BASIS,
22 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23 See the License for the specific language governing permissions and
24 limitations under the License.
27 <manualpage metafile="sections.xml.meta">
29 <title>Yapılandırma Bölümleri</title>
32 <p><a href="configuring.html">Yapılandırma dosyaları</a>ndaki
33 yönergeler sunucunun tamamına uygulanacağı gibi sadece belli dizinler,
34 dosyalar, konaklar veya URL’lere uygulanmakla sınırlanabilir. Bu
35 belgede, yapılandırma bölümü taşıyıcılarınının veya
36 <code>.htaccess</code> dosyalarının, yapılandırma dosyalarındaki diğer
37 yönergelerin etki alanlarını değiştirtirmek için nasıl kullanılacağı
41 <section id="types"><title>Yapılandırma Bölümü Taşıyıcılarının Türleri</title>
46 <module>mod_version</module>
47 <module>mod_proxy</module>
51 <directive type="section" module="core">Directory</directive>
52 <directive type="section" module="core">DirectoryMatch</directive>
53 <directive type="section" module="core">Files</directive>
54 <directive type="section" module="core">FilesMatch</directive>
55 <directive type="section" module="core">If</directive>
56 <directive type="section" module="core">IfDefine</directive>
57 <directive type="section" module="core">IfModule</directive>
58 <directive type="section" module="mod_version">IfVersion</directive>
59 <directive type="section" module="core">Location</directive>
60 <directive type="section" module="core">LocationMatch</directive>
61 <directive type="section" module="mod_proxy">Proxy</directive>
62 <directive type="section" module="mod_proxy">ProxyMatch</directive>
63 <directive type="section" module="core">VirtualHost</directive>
67 <p>İki temel taşıyıcı türü vardır. Taşıyıcıların çoğu her istek için
68 değerlendirmeye alınır. Taşıyıcılardaki yönergeler ise sadece bu
69 taşıyıcılarla eşleşen istekler için uygulanır. Diğer yandan,
70 <directive type="section" module="core">IfDefine</directive>,
71 <directive type="section" module="core">IfModule</directive> ve
72 <directive type="section" module="mod_version">IfVersion</directive>
73 taşıyıcıları sadece sunucu başlatılırken veya yeniden başlatılırken
74 değerlendirmeye alınır. Başlatma sırasında gerektirdikleri koşullar
75 sağlanıyorsa içerdikleri yönergeler tüm isteklere uygulanır. Aksi
76 takdirde, içerdikleri yönergeler yok sayılır.</p>
78 <p><directive type="section" module="core">IfDefine</directive> yönergesi
79 sadece <program>httpd</program> komut satırında uygun parametreler
80 tanımlanmışsa uygulanabilecek yönergeleri içerir. Örneğin, aşağıdaki
81 yapılandırma ile tüm isteklerin diğer siteye yönlendirilebilmesi sadece
82 sunucu <code>httpd -DClosedForNow</code> komut satırı ile başlatıldığı
83 takdirde mümkün olur:</p>
85 <highlight language="config">
86 <IfDefine ClosedForNow>
87 Redirect "/" "http://otherserver.example.com/"
91 <p><directive type="section" module="core">IfModule</directive> yönergesi
92 sadece belli bir modülün sunucuda kullanılabilir durumda olması halinde
93 uygulanabilecek yönergeleri içerir. Modülün ya sunucuyla birlikte durağan
94 olarak derlenmiş olması ya da devingen olarak derlenmiş ve yapılandırma
95 dosyasında yönergeden önce o modüle ilişkin bir <directive
96 module="mod_so">LoadModule</directive> satırının bulunması gerekir. Bu
97 yönergeyi sadece belli bir modülün varlığının veya yokluğunun
98 yapılandırma dosyanızın çalışmasını etkilememesini istediğiniz durumlarda
99 kullanmalısınız. Eksik modüllerle ilgili hata iletilerini
100 engellediğinden, taşıyıcı içine, her zaman çalışması istenen yönergeler
103 <p>Aşağıdaki örnekte, <directive module="mod_mime_magic"
104 >MimeMagicFile</directive> yönergesi sadece
105 <module>mod_mime_magic</module> modülü mevcutsa uygulanacaktır.</p>
107 <highlight language="config">
108 <IfModule mod_mime_magic.c>
109 MimeMagicFile "conf/magic"
113 <p><directive type="section" module="mod_version">IfVersion</directive>
114 yönergesi sunucunun belli bir sürümünün çalıştırılması halinde
115 uygulanabilecek yönergeleri içerebilmesi dışında <directive
116 type="section" module="core">IfDefine</directive> ve <directive
117 type="section" module="core">IfModule</directive> yönergeleri gibidir.
118 <module>mod_version</module> modülü farklı httpd sürümleri ve farklı
119 yapılandırmalarla büyük ağlarda çalışmayı mümkün kılmak veya sürüm
120 denemeleri yapabilmek amacıyla tasarlanmıştır.</p>
122 <highlight language="config">
123 <IfVersion >= 2.4>
124 # burası sadece 2.4.0 veya daha üstü sürümlerde
129 <p><directive type="section" module="core">IfDefine</directive>,
130 <directive type="section" module="core">IfModule</directive> ve
131 <directive type="section" module="mod_version">IfVersion</directive>
132 yönergelerinin önüne "!" konularak olumsuz koşullar için uygulanabilir.
133 Ayrıca, bu bölümler daha karmaşık sınırlamalar elde etmek amacıyla bir
134 diğerinin içinde kullanılabilirler.</p>
137 <section id="file-and-web">
138 <title>Dosya Sistemi, Site Alanı ve Mantıksal İfadeler</title>
140 <p>En sık kullanılan yapılandırma bölümü taşıyıcıları dosya sistemindeki
141 veya site alanındaki belli yerlerin yapılandırmalarını değiştirmekte
142 kullanılanlardır. Öncelikle, bu ikisi arasındaki farkları bilmek
143 önemlidir. Dosya sistemi disklerinizin işletim sistemi tarafından size
144 gösterilen halidir. Örneğin, öntanımlı kurulumda Apache httpd, Unix
145 sistemlerinde <code>/usr/local/apache2</code> altındayken Windows
146 sistemlerinde <code>"c:/Program Files/Apache Group/Apache2"</code>
147 altındadır. (Bilgi: Windows için bile, Apache httpd yapılandırma
148 dosyalarında dosya yolu belirtilirken tersbölü değil normal bölü
149 karakterleri kullanılır.) Site alanı ise sunucu tarafından istemciye
150 sunulan dizin ağacıdır. Yani, site alanı içindeki <code>/dir/</code>
151 dizini, Apache httpd’nin Unix üzerinde dosya sistemine öntanımlı olarak
152 kurulduğu yer göz önüne alınarak, dosya sistemindeki
153 <code>/usr/local/apache2/htdocs/dir/</code> dizinine karşılıktır. Site
154 sayfaları veritabanlarından veya başka yerlerden devingen olarak
155 üretilebildiğinden site alanlarının doğrudan dosya sistemine eşlenmesi
156 gerekli değildir.</p>
158 <section id="filesystem"><title>Dosya Sistemi Taşıyıcıları</title>
160 <p><directive type="section" module="core">Directory</directive>
161 ve <directive type="section" module="core">Files</directive>
162 taşıyıcıları, <glossary ref="regex">düzenli ifade</glossary> karşılıkları
163 ile beraber, yönergeleri dosya sisteminin parçalarına uygularlar. Bir
164 <directive type="section" module="core">Directory</directive> bölümü
165 içindeki yönergeler belli bir dosya sistemi dizinine ve onun alt
166 dizinlerine uygulanır. Aynı etki <a href="howto/htaccess.html">.htaccess
167 dosyaları</a> kullanılarak da sağlanabilir. Örneğin aşağıdaki
168 yapılandırmada, <code>/var/web/dir1</code> dizini ve alt dizinlerinde
169 dizin içeriğinin listelenmesi etkin kılınmaktadır.</p>
171 <highlight language="config">
172 <Directory "/var/web/dir1">
177 <p>Bir <directive type="section" module="core">Files</directive> bölümü
178 içindeki yönergeler, hangi dizinde bulunduğuna bakılmaksızın ismi
179 belirtilen dosyalara uygulanır. Örneğin, aşağıdaki yapılandırma
180 yönergeleri yapılandırma dosyasının ana bölümüne yerleştirildiği takdirde
181 <code>gizli.html</code> isimli dosyalara nerede bulunursa bulunsun
182 erişime izin vermeyecektir.</p>
184 <highlight language="config">
185 <Files "gizli.html">
190 <p>Dosya sisteminin belli bir yerindeki belli dosyalarla ilgili yaptırımlar
191 için <directive type="section" module="core">Files</directive> ve
192 <directive type="section" module="core">Directory</directive> bölümleri
193 birlikte kullanılabilir. Örneğin, aşağıdaki yapılandırma
194 <code>/var/web/dir1/gizli.html</code>,
195 <code>/var/web/dir1/subdir2/gizli.html</code>,
196 <code>/var/web/dir1/subdir3/gizli.html</code> ve
197 <code>/var/web/dir1/</code> altında bulunabilecek diğer tüm
198 <code>gizli.html</code> dosyalarına erişimi yasaklar.</p>
200 <highlight language="config">
201 <Directory "/var/web/dir1"><br />
202 <Files "gizli.html"><br />
209 <section id="webspace"><title>Site Alanı Taşıyıcıları</title>
211 <p><directive type="section" module="core">Location</directive> yönergesi
212 ve yönergenin <glossary ref="regex">düzenli ifade</glossary> karşılığı
213 site alanındaki içerik için yapılandırmayı değiştirir. Örneğin aşağıdaki
214 yapılandırma, <code>/gizli</code> ile başlayan URL yollarına erişimi
215 engeller. Özellikle, <code>http://siteniz.mesela.dom/gizli</code>,
216 <code>http://siteniz.mesela.dom/gizli123</code> ve
217 <code>http://siteniz.mesela.dom/gizli/dir/dosya.html</code>
218 istekleri yanında <code>/gizli</code> ile başlayan diğer isteklere de
221 <highlight language="config">
222 <LocationMatch "^/gizli">
224 </LocationMatch>
227 <p>Dosya sistemi ile etkileşime girmeyen herşey için
228 <directive type="section" module="core">Location</directive>
229 yönergesi gerekir. Aşağıdaki örnekte, belli bir URL’nin
230 <module>mod_status</module> modülü tarafından sağlanan bir dahili
231 Apache eylemcisine nasıl eşlenebileceği gösterilmiştir. Bu örnek
232 için dosya sisteminde <code>server-status</code> adında bir dosya
233 veya dizin bulunması gerekli değildir.</p>
235 <highlight language="config">
236 <Location "/server-status">
237 SetHandler server-status
242 <section id="overlapping-webspace"><title>Site Alanında Çakışma</title>
243 <p>Belli bölümler ve yönergeler değerlendirilirken çakışan iki URL bir URL
244 olarak dikkate alınır. <directive type="section" module="core"
245 >Location</directive> yönergesi için bu şöyle olurdu:</p>
247 <highlight language="config">
248 <Location "/foo">
250 <Location "/foo/bar">
254 <p>Diğer yandan <directive type="section" module="mod_alias">Takma
255 adlar</directive> tam tersi eşlenir:</p>
257 <highlight language="config">
258 Alias "/foo/bar" "/srv/www/uncommon/bar"
259 Alias "/foo" "/srv/www/common/foo"
262 <p>Aynısı <directive module="mod_proxy">ProxyPass</directive>
263 yönergeleri için de geçerlidir:</p>
265 <highlight language="config">
266 ProxyPass "/special-area" "http://special.example.com" smax=5 max=10
267 ProxyPass "/" "balancer://mycluster/" stickysession=JSESSIONID|jsessionid nofailover=On
271 <section id="wildcards">
272 <title>Dosya Adı Şablonları ve Düzenli İfadeler</title>
274 <p><directive type="section" module="core">Directory</directive>,
275 <directive type="section" module="core">Files</directive> ve
276 <directive type="section" module="core">Location</directive>
277 yönergelerinde, Standart C kütüphanesindeki <code>fnmatch</code>
278 işlevindeki gibi kabuk tarzı dosya ismi kalıpları kullanılabilir. "*"
279 karakteri herhangi bir karakter dizisi ile eşleşirken "?" karakteri tek
280 tek karakterlerle ve "[<em>seq</em>]" kalıbı ise <em>seq</em> içindeki
281 her karakterle eşleşir. "/" karakteri her hangi bir kalıp karakteri ile
282 eşleşmez; açıkça belirtilmesi gerekir.</p>
284 <p>Daha esnek bir eşleşmenin gerekli olduğu durumlar için her taşıyıcının
285 bir düzenli ifade karşılığı vardır. <directive type="section"
286 module="core">DirectoryMatch</directive>, <directive type="section"
287 module="core">FilesMatch</directive> ve <directive type="section"
288 module="core">LocationMatch</directive> yönergelerinde gerekli
289 eşleşmeleri seçmek için perl uyumlu <glossary ref="regex">düzenli
290 ifadelerin</glossary> kullanımına izin verilir. Ayrıca, yönergelerin
291 uygulanışının düzenli ifade bölümleri kullanılarak nasıl
292 değiştirileceğini öğrenmek için, aşağıda, yapılandırmanın
293 katıştırılmasıyla ilgili bölüme de bakınız.</p>
295 <p>Tüm kullanıcı dizinlerine ilişkin yapılandırmayı değiştirmek için dosya
296 ismi kalıpları şöyle kullanılabilirdi:</p>
298 <highlight language="config">
299 <Directory "/home/*/public_html">
304 <p>Düzenli ifade bölümleri kullanarak çeşitli türlerdeki resim dosyalarına
305 erişimi bir defada yasaklayabiliriz:</p>
307 <highlight language="config">
308 <FilesMatch "\.(?i:gif|jpe?g|png)$">
313 <p><strong>İsimli gruplar ve geriye başvurular</strong> içeren düzenli
314 ifadeler ortama eklenirken ilgili isimler büyük harfli yapılır. Böylece,
315 URL'lere ve dosya yolları elemanlarına <a href="expr.html">ifadelerin
316 içinden</a> ve <module>mod_rewrite</module> gibi modüllerden başvurmak
319 <highlight language="config">
320 <DirectoryMatch "^/var/www/combined/(?<SITENAME>[^/]+)">
321 require ldap-group "cn=%{env:MATCH_SITENAME},ou=combined,o=Example"
322 </DirectoryMatch>
326 <section id="expressions"><title>Mantıksal İfadeler</title>
327 <p><directive type="section" module="core">If</directive> yönergesi bir
328 mantıksal ifade olarak belirtilebilen bir kurala bağlı olarak
329 yapılandırmayı değiştirebilir. Örneğin, aşağıdaki yapılandırmada,
330 <code>HTTP Referer</code> başlığı "http://www.example.com/" ile
331 başlamıyorsa erişimi yasaklar.</p>
333 <highlight language="config">
334 <If "!(%{HTTP_REFERER} -strmatch 'http://www.example.com/*')">
340 <section id="whichwhen"><title>Ne, Ne Zaman Kullanılır?</title>
341 <p>Dosya sistemi taşıyıcıları ile site alanı taşıyıcıları arasında seçim
342 yapmak aslında oldukça kolaydır. Dosya sisteminde bulunan nesnelere
343 uygulanacak yönergeler için daima <directive type="section" module="core"
344 >Directory</directive> veya <directive type="section" module="core"
345 >Files</directive> kullanılır. Dosya sisteminde bulunmayan nesnelere
346 (bir sayfanın bir veritabanı tarafından üretilmesi gibi) uygulanacak
347 yönergeler için ise <directive type="section" module="core"
348 >Location</directive> kullanılır.</p>
350 <p>Dosya sistemindeki nesnelere erişimi kısıtlarken asla
351 <directive type="section" module="core">Location</directive>
352 kullanmamak önemlidir. Bunun sebebi farklı site alanı konumlarının
353 (URL’ler) aynı dosya sistemi konumuna eşlenebilmesi dolayısıyla
354 kısıtlamalarınızın etrafından dolaşılabilmesine izin vermesidir.
355 Örneğin, aşağıdaki yapılandırmayı ele alalım:</p>
357 <highlight language="config">
358 <Location "/dir/">
363 <p><code>http://siteniz.mesela.dom/dir/</code> için bir istek yapılmışsa
364 bu doğru çalışacaktır. Fakat dosya sistemi harf büyüklüğüne duyarsızsa
365 ne olacak? Kısıtlamanız, istek
366 <code>http://siteniz.mesela.dom/DIR/</code>
367 şeklinde yapılarak kolayca geçersiz kılınabilir. Halbuki <directive
368 type="section" module="core">Directory</directive> yönergesi isteğin
369 nasıl yapıldığına bakılmaksızın bu konumdan sunulan her türlü içeriğe
370 uygulanacaktı. (Dosya sistemi bağlarıyla bu da aşılabilir. Sembolik
371 bağlar kullanılarak aynı dizin dosya sisteminin bir çok yerine
372 yerleştirilebilir. <directive type="section" module="core"
373 >Directory</directive> yönergesi dosya yolunu sıfırlamaksızın sembolik
374 bağları izleyecektir. Bu bakımdan, en yüksek seviyede güvenlik için uygun
375 <directive module="core">Options</directive> yönergesi ile sembolik
376 bağların izlenmesi devredışı bırakılabilir.)</p>
378 <p>Belki de siz sırf harf büyüklüğüne duyarlı bir dosya sistemi
379 kullanıyorsunuz diye böyle uygulamalara ihtiyacınız olmadığını düşünüyor
380 olabilirsiniz, fakat aynı site alanını çok sayıda dosya sistemi konumuna
381 eşleyecek daha bir sürü yol bulunduğunu unutmayınız. Bu bakımdan dosya
382 sisteminde yapacağınız kısıtlamalarda daima dosya sistemi taşıyıcılarını
383 kullanmalısınız. Bununla birlikte bu kuralın da bir istisnası vardır.
384 Yapılandırma kısıtlamalarının bir <code><Location "/"></code> bölümü
385 içine koyulması, bu bölüme konan yönergelerin etki alanının belli bir URL
386 ile sınırlı olmaması nedeniyle mükemmelen güvenlidir.</p>
389 <section id="nesting"><title>Bölüm iç içeliği</title>
390 <p>Bazı bölüm türleri başka bölüm türlerinin içinde olabilir. Bir yandan,
391 <directive type="section" module="core">Files</directive> bölümü
392 <directive type="section" module="core">Directory</directive> bölümünün
393 içinde bulunabilirken diğer yandan bir <directive type="section"
394 module="core">If</directive> bölümü <directive type="section"
395 module="core">Directory</directive>, <directive type="section"
396 module="core">Location</directive> ve <directive
397 type="section" module="core">Files</directive> bölümlerinde bulunabilir.
398 Bu bölümlerin düzenli ifadeli türevleri de benzer tarzda davranır.</p>
400 <p>İç içe bölümler, aynı türdeki iç içe olmayan bölümlerin sonrasına
406 <section id="virtualhost"><title>Sanal Konaklar</title>
408 <p><directive type="section" module="core">VirtualHost</directive>
409 taşıyıcısının içinde belli bir konağa uygulanan yönergeler bulunur.
410 Aynı makinede çok sayıda konağı farklı yapılandırmalarla sunuyorsanız
411 bu taşıyıcı çok işinize yarar. Daha fazla bilgi için
412 <a href="vhosts/">Sanal Konak Belgeleri</a> bölümüne bakınız.</p>
415 <section id="proxy"><title>Vekil</title>
416 <p><directive type="section" module="mod_proxy">Proxy</directive>
417 ve <directive type="section" module="mod_proxy">ProxyMatch</directive>
418 taşıyıcıları, sadece belli bir URL ile eşleşen <module>mod_proxy</module>
419 vekil sunucusu üzerinden erişilen sitelere uygulanan yapılandırma
420 yönergelerini bulundururlar. Örneğin aşağıdaki yapılandırma
421 <code>example.com</code> sitesine erişim için vekil sunucunun
422 sadece ağdaki bazı kullanıcılar tarafından kullanılabilmesini sağlayacaktır.</p>
424 <highlight language="config">
425 <Proxy "http://www.example.com/*">
426 Require host bizimki.example.com
431 <section id="whatwhere"><title>Hangi Yönergelere İzin Veriliyor?</title>
432 <p>Hangi yönergelere hangi yapılandırma bölümlerinde izin verildiğini
433 öğrenmek için yönerge <a href="mod/directive-dict.html#Context"
434 >bağlamına</a> bakınız. <directive type="section"
435 module="core">Directory</directive> bölümlerinde
436 izin verilen herşeye sözdizimsel olarak ayrıca
437 <directive type="section" module="core">DirectoryMatch</directive>,
438 <directive type="section" module="core">Files</directive>,
439 <directive type="section" module="core">FilesMatch</directive>,
440 <directive type="section" module="core">Location</directive>,
441 <directive type="section" module="core">LocationMatch</directive>,
442 <directive type="section" module="mod_proxy">Proxy</directive>
443 ve <directive type="section" module="mod_proxy">ProxyMatch</directive>
444 bölümlerinde de izin verilir. Yine de bazı istisnai durumlar
448 <li><directive module="core">AllowOverride</directive> yönergesi sadece
449 <directive type="section" module="core">Directory</directive>
450 bölümlerinde çalışır.</li>
452 <li><directive module="core">Options</directive> yönergesinin
453 <code>FollowSymLinks</code> ve <code>SymLinksIfOwnerMatch</code>
454 seçenekleri sadece <directive type="section" module="core"
455 >Directory</directive> bölümlerinde veya <code>.htaccess</code>
456 dosyalarında çalışır.</li>
458 <li><directive module="core">Options</directive> yönergesi
459 <directive type="section" module="core">Files</directive> ve
460 <directive type="section" module="core">FilesMatch</directive>
461 bölümlerinde kullanılamaz.</li>
465 <section id="merging"><title>Bölümler Nasıl Katıştırılır?</title>
467 <p>Yapılandırma bölümleri belli bir sıra ile uygulanır. Yapılandırma
468 yönergelerinin yorumlanışı üzerinde önemli etkilere sahip olabilmesi
469 nedeniyle neyin ne zaman çalıştığını anlamak çok önemlidir.</p>
471 <p>Yapılandırma bölümlerinin katıştırılma sırası şöyledir:</p>
474 <li><directive type="section"
475 module="core">Directory</directive> (düzenli ifadeler hariç)
476 ve <code>.htaccess</code> aynı anda işleme sokulur
477 (<code>.htaccess</code> ile eğer izin verilmişse <directive
478 type="section" module="core">Directory</directive> içindeki bazı
479 yönergeler geçersiz kılınabileceği için).</li>
481 <li><directive type="section" module="core">DirectoryMatch</directive>
482 (ve <code><Directory "~"></code>).</li>
484 <li><directive type="section" module="core">Files</directive> ve
485 <directive type="section" module="core">FilesMatch</directive> aynı anda
488 <li><directive type="section" module="core">Location</directive>
489 ve <directive type="section" module="core">LocationMatch</directive>
490 aynı anda işleme sokulur.</li>
492 <li><directive type="section" module="core">If</directive>
496 <p><directive type="section" module="core">Directory</directive>
497 bölümündekiler hariç, her grup, yapılandırma dosyasında bulundukları
498 sıraya göre işleme sokulurlar. Yukarıda 1. grup olan <directive
499 type="section" module="core">Directory</directive> bölümü en kısa dizin
500 elemanından en uzun dizin elemanına doğru işleme sokulur. Yani, örneğin,
501 <code><Directory "/var/web/dir"></code> bölümü <code><Directory
502 "/var/web/dir/subdir"></code> bölümünden önce işleme sokulacaktır. Eğer
503 aynı uzunlukta çok sayıda dizin varsa <directive type="section"
504 module="core">Directory</directive> bölümleri yapılandırma dosyasında
505 bulundukları sıraya göre işleme sokulurlar. <directive
506 module="core">Include</directive> yönergeleri ile yapılandırmaya dahil
507 edilen dosyaların içerikleri <directive module="core">Include</directive>
508 yönergesinin bulunduğu yere konulduktan sonra işleme sokulurlar.</p>
510 <p><directive type="section" module="core">VirtualHost</directive>
511 bölümlerinin içindeki bölümler, sanal konak tanımı dışındaki
512 karşılıklarından <em>sonra</em> uygulanırlar.</p>
514 <p>İstek <module>mod_proxy</module> tarafından sunulduğu takdirde,
515 <directive module="mod_proxy" type="section">Proxy</directive> taşıyıcısı
516 işlem sırasında <directive module="core" type="section"
517 >Directory</directive> taşıyıcısının yerini alır.</p>
519 <note><title>Bazı Teknik Bilgiler</title>
520 Aslında, isim dönüşüm aşamasından (<code>Aliases</code> ve
521 <code>DocumentRoots</code>, URL’leri dosya isimlerine eşlemek için
522 kullanılırken) hemen önce uygulanan bir
523 <code><Location></code>/<code><LocationMatch></code> dizisi
524 vardır. Bu dizinin sonuçları isim dönüşüm aşaması tamamlandıktan sonra
525 tamamen elden çıkarılır.
528 <section id="relationship-module-configuration"><title>Modüllerle
529 yapılandırma bölümleri arasındaki ilişki</title>
531 <p>Yapılandırma bölümlerini okurken örneğin <module>mod_rewrite</module>
532 gibi belli modüllerin yönergelerinin bu bölümlere nasıl katılacağı ve
533 ne zaman nasıl işleneceği gibi sorular sıkça aklımızdan geçer. Bunun
534 belli bir yanıtı yoktur ve biraz temel bilgi gerektirir. Her httpd
535 modülü yapılandırmasını kendi yönetir ve httpd.conf içindeki
536 yönergelerinin her biri belli bir bağlamdaki bir yapılandırmayı
537 belirtir. httpd bir komutu okunduğu sırada çalıştırmaz.</p>
539 <p>Çalışma anında, httpd çekirdeği geçerli isteğe hangilerinin
540 uygulanacağını belirlemek için yukarıda açıklanan sırada tanımlı
541 yapılandırma bölümlerini tekrar tekrar okur. Eşleşen ilk bölümün bu
542 istek için geçerli yapılandırmayı içerdiği varsayılır. Eğer alt
543 bölümlerden biri de eşleşmişse bu bölümlerde yönergeleri bulunan her
544 modüle yapılandırmasını iki bölüm arasında katıştırma şansı verilir.
545 Sonuç üçüncü bir yapılandırma olup işlem bütün yapılandırma bölümleri
546 değerlendirilene kadar sürer.</p>
548 <p>Yukarıdaki adımların ardından HTTP isteğiyle ilgili "asıl" işlem
549 başlar: her modül ondan istenen görevleri gerçekleştirme şansına sahip
550 olur. Nasıl davranacaklarını belirlemek için kendilerinin katıştırılmış
551 son yapılandırmalarını http çekirdeğinden alabilirler.</p>
553 <p>Sürecin tamamı bir örnekle görselleştirilebilir. Aşağıdaki örnekte
554 belli bir HTTP başlığını ayarlamak için <module>mod_headers</module>
555 modülünün <directive module="mod_headers">Header</directive> yönergesi
556 kullanılmıştır. <code>/example/index.html</code> isteği için httpd
557 <code>CustomHeaderName</code> başlığına hangi değeri atayacaktır?
559 <highlight language="config">
561 <Directory "/">
562 Header set CustomHeaderName bir
563 <FilesMatch ".*">
564 Header set CustomHeaderName yedi
568 <Directory "/example">
569 Header set CustomHeaderName iki
574 <li><directive>Directory</directive> "/" eşleşir ve ilk yapılandırma
575 olarak <code>CustomHeaderName</code> başlığı <code>bir</code>
576 değeriyle oluşturulur.</li>
578 <li><directive>Directory</directive> "/example" eşleşir ve
579 <module>mod_headers</module> modülünün koduna göre bir katıştırma
580 durumundan yeni değer eskiyi geçersiz kılacağından yeni bir
581 yapılandırma ile <code>CustomHeaderName</code> başlığının değeri
582 <code>iki</code> yapılır.</li>
584 <li><directive>FilesMatch</directive> ".*" eşleşir ve başka bir
585 katıştırma fırsatı doğar: <code>CustomHeaderName</code> başlığının
586 değeri <code>yedi</code> yapılır.</li>
588 <li>Neticede HHP isteğinin sonraki adımlarında
589 <module>mod_headers</module> çağrılıp <code>yedi</code> değeri
590 atanmış <code>CustomHeaderName</code> başlığını işleme sokması
591 istenecektir. <module>mod_headers</module> normalde işini yapmak
592 için bu yapılandırmayı kullanacaktır. Fakat bundan, bir yönergenin
593 gerekli olmaması veya kullanımdan kaldırılması ve benzeri nedenlerle
594 yapılandırmada iptal edilmesi gibi daha karmaşık bir eylemi bir
595 modülün gerçekleştiremeyeceği anlamı çıkarılmamalıdır.</li>
598 <p><directive>Directory</directive> ile aynı katıştırma sırasından dolayı
599 bu durum .htaccess için de geçerlidir. Burada anlaşılması gereken husus,
600 <directive>Directory</directive> ve <directive>FilesMatch</directive>
601 gibi yapılandırma bölümlerinin <directive
602 module="mod_headers">Header</directive> veya <directive
603 module="mod_rewrite">RewriteRule</directive> gibi modüle özgü
604 yönergelerle karşılaştırılmamasıdır, çünkü bunlar farklı seviyelerde
609 <section id="merge-examples"><title>Bazı Örnekler</title>
611 <p>Aşağıdaki yapay örnekte katıştırma sırası gösterilmiştir. Hepsinin aynı
612 isteğe uygulandığı varsayımıyla, bu örnekteki yönergeler A > B > C
613 > D > E sırasıyla uygulanacaktır.</p>
615 <highlight language="config">
620 <Files "f.html">
624 <VirtualHost *>
625 <Directory "/a/b">
630 <DirectoryMatch "^.*b$">
632 </DirectoryMatch>
634 <Directory "/a/b">
639 <p>Daha somut bir örnek olarak aşağıdakini ele alalım.
640 <directive module="core" type="section">Directory</directive>
641 bölümlerindeki erişim sınırlamaları ne olursa olsun <directive
642 module="core" type="section">Location</directive> bölümü son olarak
643 değerlendirmeye alınacak ve sunucuya sınırsız erişim verecektir.
644 Başka bir deyişle, katıştırma sırası önemlidir, bu nedenle dikkatli
647 <highlight language="config">
652 # Alooo! Bu <Directory> bölümünün hiçbir hükmü yok.
653 <Directory "/">
656 Require not host kkadam.example.com