]> granicus.if.org Git - apache/blob - docs/manual/urlmapping.xml.tr
Help doc writer to spot places where:
[apache] / docs / manual / urlmapping.xml.tr
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: 1310494:1755981 (outdated) -->
5 <!-- =====================================================
6  Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
7    Reviewed by: Orhan Berent <berent belgeler.org>
8 ========================================================== -->
9
10 <!--
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
17
18      http://www.apache.org/licenses/LICENSE-2.0
19
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.
25 -->
26
27 <manualpage metafile="urlmapping.xml.meta">
28
29   <title>URL’lerin Dosya Sistemi ile Eşleştirilmesi</title>
30
31   <summary>
32     <p>Bu belgede, bir istekte belirtilen URL’nin sunulacak dosyanın dosya
33       sistemindeki yerini bulmak için Apache HTTP Sunucusu tarafından nasıl
34       kullanıldığı açıklanmaktadır.</p>
35   </summary>
36
37 <section id="related"><title>İlgili Modüller ve Yönergeler</title>
38
39 <related>
40 <modulelist>
41 <module>mod_actions</module>
42 <module>mod_alias</module>
43 <module>mod_dir</module>
44 <module>mod_imagemap</module>
45 <module>mod_negotiation</module>
46 <module>mod_proxy</module>
47 <module>mod_rewrite</module>
48 <module>mod_speling</module>
49 <module>mod_userdir</module>
50 <module>mod_vhost_alias</module>
51 </modulelist>
52 <directivelist>
53 <directive module="mod_alias">Alias</directive>
54 <directive module="mod_alias">AliasMatch</directive>
55 <directive module="mod_speling">CheckSpelling</directive>
56 <directive module="core">DocumentRoot</directive>
57 <directive module="core">ErrorDocument</directive>
58 <directive module="core">Options</directive>
59 <directive module="mod_proxy">ProxyPass</directive>
60 <directive module="mod_proxy">ProxyPassReverse</directive>
61 <directive module="mod_proxy">ProxyPassReverseCookieDomain</directive>
62 <directive module="mod_proxy">ProxyPassReverseCookiePath</directive>
63 <directive module="mod_alias">Redirect</directive>
64 <directive module="mod_alias">RedirectMatch</directive>
65 <directive module="mod_rewrite">RewriteCond</directive>
66 <directive module="mod_rewrite">RewriteRule</directive>
67 <directive module="mod_alias">ScriptAlias</directive>
68 <directive module="mod_alias">ScriptAliasMatch</directive>
69 <directive module="mod_userdir">UserDir</directive>
70 </directivelist>
71 </related>
72 </section>
73
74 <section id="documentroot"><title><code>DocumentRoot</code></title>
75
76     <p>Yapılan bir isteğe hangi dosyanın sunulacağına karar verirken
77       httpd’nin öntanımlı davranışı istek için URL yolunu (URL’den konak ismi
78       ve port ayrıldıktan sonra kalan kısım) alıp bunu yapılandırma dosyasında
79       <directive module="core">DocumentRoot</directive> yönergesi ile
80       belirtilen dizinin sonuna eklemektir. Bu nedenle, <directive
81       module="core">DocumentRoot</directive> altındaki dizinler ve dosyalar
82       sitenin dışardan görünen temel belge ağacını oluştururlar.</p>
83
84     <p>Örneğin, <directive module="core">DocumentRoot</directive> yönergesine
85       <code>/var/http/html</code> atanmış olsun.
86       <code>http://mesela.dom/balıklar/zargana.html</code> şeklindeki bir
87       istek için istemciye <code>/var/http/html/balıklar/zargana.html</code>
88       dosyası sunulur.</p>
89
90     <p>httpd ayrıca, sunucunun birden fazla konak için istek kabul etmesini
91       sağlayan <a href="vhosts/">sanal barındırmaya</a> da muktedirdir. Bu
92       durumda her sanal konak için ayrı bir <directive module="core"
93       >DocumentRoot</directive> belirtilebileceği gibi sunulacak içeriğin
94       istekte bulunulan IP adresi veya konak ismine dayanarak devingen olarak
95       saptanmasını sağlayabilen <module>mod_vhost_alias</module> modülüyle
96       gelen yönergeler de kullanılabilir.</p>
97
98     <p><directive module="core">DocumentRoot</directive> yönergesi
99       yapılandırma dosyanızda ana sunucu için bir tane ve muhtemelen
100       oluşturduğunuz her <a href="vhosts/">sanal konak</a> için de birer
101       tanedir.</p>
102 </section>
103
104 <section id="outside"><title>Belge Kök Dizini Dışındaki Dosyalar</title>
105
106     <p>Bazen dosya sisteminde doğrudan <directive module="core"
107       >DocumentRoot</directive> altında bulunmayan dosyalara da erişim izni
108       vermek gerekir. httpd’de bunu sağlamanın çeşitli yolları vardır. Unix
109       sistemlerinde sembolik bağlar sayesinde dosya sisteminin farklı
110       yerlerindeki dosyaları ve dizinleri <directive module="core"
111       >DocumentRoot</directive> altındaymış gibi göstermek mümkündür.
112       <directive module="core">Options</directive> yönergesine değer olarak
113       <code>FollowSymLinks</code> veya <code>SymLinksIfOwnerMatch</code>
114       atanmadıkça httpd olası güvenlik açıklarına karşı öntanımlı olarak
115       sembolik bağları izlemez.</p>
116
117     <p>Bundan başka, dosya sisteminin farklı parçalarını belge kök dizini
118       altında göstermek için <directive module="mod_alias">Alias</directive>
119       yönergesi de kullanılabilir. Örneğin,</p>
120
121     <example>Alias /belgeler /var/http</example>
122
123     <p>yapılandırması ile
124       <code>http://mesela.dom/belgeler/dizin/dosya.html</code> URL’si için
125       dosya sistemindeki <code>/var/http/dizin/dosya.html</code> dosyası
126       sunulacaktır. Hedef dizindeki dosyaları birer <glossary ref="cgi"
127       >CGI</glossary> betiği olarak imlemesi dışında <directive
128       module="mod_alias" >ScriptAlias</directive> yönergesi de aynı şekilde
129       çalışır.</p>
130
131     <p>Biraz daha fazla esnekliğin gerektiği durumlarda  <glossary
132       ref="regex">düzenli ifadelere</glossary> dayalı eşleşmeler sağlamak
133       üzere <directive module="mod_alias">AliasMatch</directive> ve <directive
134       module="mod_alias" >ScriptAliasMatch</directive> yönergelerinin gücünden
135       yararlanılabilir. Örneğin,</p>
136
137     <example>ScriptAliasMatch ^/~([a-zA-Z0-9]+)/cgi-bin/(.+)
138       /home/$1/cgi-bin/$2</example>
139
140     <p>satırı sayesinde <code>http://mesela.dom/~user/cgi-bin/betik.cgi</code>
141       URL’si <code>/home/user/cgi-bin/betik.cgi</code> dosyası ile
142       eşleştirilir ve dosya bir CGI betiği olarak çalıştırılırdı.</p>
143 </section>
144
145 <section id="user"><title>Kullanıcı Dizinleri</title>
146
147     <p>Geleneksel olarak Unix sistemlerinde belli bir kullanıcının (örn,
148       <em>birisi</em>) ev dizinine <code>~birisi/</code> şeklinde atıfta
149       bulunulabilir. <module>mod_userdir</module> modülü bu özelliği site
150       üzerinden kullanıcıların ev dizinlerindeki dosyaları kişisel sayfalar
151       olarak sunmalarını sağlamak üzere kullanır. Örnek:</p>
152
153     <example>http://mesela.dom/~birisi/dosya.html</example>
154
155     <p>Güvenlik sebebiyle kullanıcıların ev dizinlerine doğrudan HTTP erişimi
156       vermek uygun olmaz. Bu bakımdan, kullanıcının ev dizini altında HTTP
157       erişimi verilecek dosyaların bulunduğu dizini belirtmek için <directive
158       module="mod_userdir">UserDir</directive> yönergesi sağlanmıştır.
159       Öntanımlı olan <code>Userdir public_html</code> yapılandırması ile
160       yukarıdaki gibi bir URL kullanıcının ev dizini (<code>/etc/passwd</code>
161       dosyasında belirtilir) <code>/home/birisi/</code> altında yer alan
162       <code>/home/birisi/public_html/dosya.html</code> dosyası ile
163       eşleşirdi.</p>
164
165     <p>Ev dizininin yerinin <code>/etc/passwd</code> dosyasında belirtilmediği
166       sistemlerde kullanılmak üzere <code>Userdir</code> yönergesinin başka
167       kullanım şekilleri de vardır.</p>
168
169     <p>Bazı kişiler (genellikle URL üzerinde <code>%7e</code> olarak
170       kodlanması sebebiyle) "~" simgesini biçimsiz bulabilir ve kullanıcı
171       dizinlerini imlemek için başka bir karakter kullanmayı tercih
172       edebilirler. Bu işlevsellik <module>mod_userdir</module> tarafından
173       desteklenmemektedir. Ancak, kullanıcı dizinleri düzgün şekilde
174       yapılandırılmışsa istenen etki <directive
175       module="mod_alias">AliasMatch</directive> yönergesi ile sağlanabilir.
176       Örneğin, <code>http://mesela.dom/sayfalar/birisi/dosya.html</code>
177       URL’si ile <code>/home/birisi/public_html/dosya.html</code> dosyasını
178       eşlemek için <code>AliasMatch</code> yönergesi şöyle
179       kullanılabilirdi:</p>
180
181     <example>AliasMatch ^/sayfalar/([a-zA-Z0-9]+)(/(.*))?$
182           /home/$1/public_html/$3</example>
183 </section>
184
185 <section id="redirect"><title>URL Yönlendirme</title>
186
187     <p>Yukarıdaki bölümlerde açıklanan yapılandırma yönergeleri httpd’ye
188       içeriği dosya sisteminin belli bir yerinden alıp istemciye göndermesini
189       söyler. Bazen istemciye, istediği içeriğe farklı bir URL ile
190       erişebileceğini ve bu URL için ayrı bir istek yapması gerektiğini
191       bildirmek gerekir. Bu işleme <em>yönlendirme</em> adı verilir ve bu
192       işlevsellik <directive module="mod_alias">Redirect</directive> yönergesi
193       ile sağlanır. Örneğin, <directive module="core">DocumentRoot</directive>
194       altındaki <code>/foo/</code> dizininin içeriğinin <code>/bar/</code>
195       adında yeni bir dizine taşınması halinde istemciye yeni konumun
196       bildirilmesi şöyle sağlanabilirdi:</p>
197
198     <example>Redirect permanent /foo/
199       http://mesela.dom/bar/</example>
200
201     <p>Bu atama sayesinde <code>/foo/</code> ile başlayan URL yolları
202       <code>mesela.dom</code> sunucundaki <code>/bar/</code> dizini altındaki
203       içeriğe yönlendirilmektedir. Yönlendirmeyi aynı sunucu üzerinde yapmak
204       zorunda değilsiniz, bu yönerge ile başka bir sunucuya da yönlendirme
205       yapabilirsiniz.</p>
206
207     <p>httpd ayrıca, yeniden yazma ile ilgili daha karmaşık sorunlara çözüm
208       olarak <directive module="mod_alias">RedirectMatch</directive> diye bir
209       yönerge daha sağlar. Örneğin bir sitenin baş sayfasını diğer isteklerden
210       ayrı olarak farklı bir siteye yönlendirmek için yönergeyi şöyle
211       kullanabilirsiniz:</p>
212
213     <example>RedirectMatch permanent ^/$
214       http://misal.dom/ilksayfa.html</example>
215
216     <p>Bundan başka, bir sitedeki tüm sayfalara yapılan istekleri başka bir
217       siteye geçici olarak yönlendirmek için şöyle bir şey yapabilirsiniz:</p>
218
219     <example>RedirectMatch temp .*
220       http://mesela.misal.dom/ilksayfa.html</example>
221 </section>
222
223 <section id="proxy"><title>Karşı Vekil</title>
224
225     <p>httpd ayrıca, uzak sunuculardaki belgelerin yerel sunucunun URL
226       alanına getirilmesini de mümkün kılar. Bu tekniğe HTTP sunucunun
227       belgeleri uzak bir sunucudan alıp istemciye sunmasını sağlayarak bir
228       vekil sunucu gibi davranması nedeniyle <em>ters vekalet</em> adı
229       verilir. Belgelerin istemciye özkaynağın bulunduğu sunucudan
230       geliyormuş gibi değilde doğrudan isteği yaptığı sunucudan geliyormuş
231       gibi sunulması nedeniyle bu işlem normal vekaletten farklıdır.</p>
232
233     <p>Aşağıdaki örnekte, istemci <code>/foo/</code> dizini altından bir belge
234       istemekte, sunucu ise bu belgeyi <code>dahili.mesela.dom</code>
235       üzerindeki <code>/bar/</code> dizininden alıp istemciye yerel sunucudan
236       geliyormuş gibi sunmaktadır:</p>
237
238     <example>
239       ProxyPass /foo/ http://dahili.mesela.dom/bar/<br />
240       ProxyPassReverse /foo/ http://dahili.mesela.dom/bar/<br />
241       ProxyPassReverseCookieDomain dahili.mesela.dom harici.mesela.dom<br />
242       ProxyPassReverseCookiePath /foo/ /bar/
243     </example>
244
245     <p><directive module="mod_proxy">ProxyPass</directive> sunucuyu uygun
246       belgeleri alması için yapılandırırken <directive module="mod_proxy"
247       >ProxyPassReverse</directive> yönergesi <code>dahili.mesela.dom</code>
248       sunucusundan kaynaklanan yönlendirmeleri yeniden yazar, böylece bunların
249       yerel sunucudaki yerleri belirlenmiş olur. Benzer şekilde,  <directive
250       module="mod_proxy">ProxyPassReverseCookieDomain</directive> ve
251       <directive module="mod_proxy">ProxyPassReverseCookiePath</directive>
252       yönergeleri de arka sunucu tarafından atanan çerezleri yeniden yazar.</p>
253
254     <p>Yalnız, belgelerin içindeki hiperbağların yeniden yazılmayacağına
255       dikkat ediniz. Dolayısıyla, belge içinde
256       <code>dahili.mesela.dom</code>’u ismiyle hedef alan mutlak hiperbağlar
257       varsa bunlar istemci tarafından vekil sunucudan değil doğrudan
258       <code>dahili.mesela.dom</code>’dan istenecektir. Bir sayfanın içindeki bu
259       bağları (ve diğer içeriği) <module>mod_substitute</module> modülü
260       kullanılarak istemciye sunuluyormuşçasına değiştirebilirsiniz.</p>
261
262     <example>
263       Substitute s/dahili\.mesela\.dom/harici.mesela.dom/i
264     </example>
265
266      <p>HTML ve XHTML’de hiperbağları daha bilgece yeniden yazabilen
267       <module>mod_proxy_html</module> modülü de kullanılabilir. Yeniden
268       yazılması gereken URL eşlemlerini oluşturmanızı sağlar, böylece karmaşık
269       vekil senaryoları oluşturulabilir.</p>
270 </section>
271
272 <section id="rewrite"><title>Yeniden Yazma Motoru</title>
273
274     <p>Daha güçlü ikameler gerektiğinde <module>mod_rewrite</module> modülü
275       tarafından sağlanan yeniden yazma motoru işe yarayabilir. Bu modüldeki
276       yönergeler sunulacak içeriğin yerine karar vermek için kaynak IP adresi,
277       tarayıcı türü gibi isteğe özgü özellikleri kullanırlar.
278       <module>mod_rewrite</module> modülü buna ek olarak isteğin nasıl ele
279       alınacağına karar vermek için harici yazılımları ve veritabanlarını
280       kullanabilir. Yeniden yazma motoru yukarıda değinilen üç eşleşme türünü
281       de uygulayabilecek yetenektedir: Dahili yönlendirmeler (rumuzlar),
282       harici yönlendirmeler ve vekalet. <module>mod_rewrite</module> modülü
283       tarafından sağlanan yeteneklerin ayrıntılı açıklamaları ve bunların
284       kullanım örnekleri ayrıntılı olarak <a href="rewrite/">mod_rewrite
285       belgeleri</a>nde bulunmaktadır.</p>
286 </section>
287
288 <section id="notfound"><title>Dosya orada yok</title>
289
290     <p>Kaçınılmaz olarak, dosya sisteminde mevcut olmayan dosyalar için de
291       istek yapılacaktır. Bunun çeşitli sebepleri olabilir.  Bazı durumlarda
292       bu, belgelerin yerlerininin değiştirilmesinin bir sonucu olabilir. Bu
293       durumda yapılacak en iyi şey, istemciyi belgeyi yeni yerinden istemesi
294       için bilgilendirmek amacıyla  <a href="#redirect">URL yönlendirmesi</a>
295       kullanmaktır. Bu şekilde, içeriğin yeri değişse bile eski yer imlerinin
296       ve hiperbağların çalışmaya devam edeceklerinden emin olabilirsiniz.</p>
297
298     <p>"Dosya orada yok" ("File Not Found") hatalarının diğer bir bildik
299       sebebi de URL’lerin hiperbağlarda veya doğrudan tarayıcıda kasıtlı ya da
300       kasıtsız, yanlış yazılmasıdır. Bu tür sorunlarda yardımcı olması için
301       httpd <module>mod_speling</module> (sic) adında bir modülle gelir. Bu
302       modül etkin kılındığında htpd, "Dosya orada yok" ("File Not Found")
303       hatalarının önünü kesip başka bir yerde benzer isimde bir dosya var mı
304       diye bakar. Böyle bir dosya varsa, <module>mod_speling</module>
305       istemciye dosyanın doğru yerini bildiren bir HTTP yönlendirmesi yollar.
306       Benzer çok sayıda dosya varsa bunlar istemciye bir liste halinde
307       sunulur.</p>
308
309     <p><module>mod_speling</module> modülünün en yararlı özelliklerinden biri
310       de dosya isimlerini harf büyüklüğüne duyarsız olarak arayabilmesidir.
311       Dosya isimlerinde harf büyüklüğünün önemli olduğu Unix benzeri sistemler
312       hakkında bilgisi olmayan kullanıcılara sahip sistemlerin kullanıcılarına
313       bu büyük yarar sağlar. Fakat modülün URL düzeltmekten başka şeyler için
314       de kullanılması, istemcilerden gelen neredeyse her isteğin URL
315       yönlendirmesine konu olmasına sebep olarak sunucunun yükünü
316       arttırabilir.</p>
317
318     <p><module>mod_dir</module> modülü sanal URI'leri, onları sunan gerçek
319       kaynağa eşlemekte kullanılan <directive module="mod_dir"
320       >FallbackResource</directive> yönergesini içerir. Bir 'ön denetleyici'
321       gerçeklerken <module>mod_rewrite</module> modülünün kullanılmasını
322       sağlamak için çok kullanışlıdır.</p>
323
324     <p>Yerinde bulunmayan içeriğin bulunması çabalarının tümü Apache’nin 404
325       (Dosya orada yok) HTTP durum kodlu bir hata sayfası döndürmesine yol
326       açar. Bu sayfanın içeriği <directive module="core"
327       >ErrorDocument</directive> yönergesi ile denetlenebilir ve <a
328       href="custom-error.html" >Hata Yanıtlarının Kişiselleştirilmesi</a>
329       bölümünde anlatıldığı gibi oldukça esnek bir şekilde
330       kişiselleştirilebilir.</p>
331 </section>
332
333 <section id="other"><title>Diğer URL Eşleme Modülleri</title>
334
335 <!-- TODO Flesh out each of the items in the list below. -->
336
337     <p>URL eşlemede kullanılabilecek diğer modüller:</p>
338
339     <ul>
340     <li><module>mod_actions</module> - Bir isteği, özkaynağın MIME türüne veya
341       istek yöntemine bakarak bir CGI betiğine eşler.</li>
342
343     <li><module>mod_dir</module> - URL'yi sonlandıran bölü çizgisini
344       <code>index.html</code> bir dosyaya eşler.</li>
345
346     <li><module>mod_imagemap</module> - Bir isteği, bir HTML belge içindeki
347       bir resme yapılan kullanıcı tıklamalarına dayanarak bir URL'ye
348       eşler.</li>
349
350     <li><module>mod_negotiation</module> - Dil veya içerik sıkıştırması gibi
351       kullanıcı tercihlerine dayanarak uygun bir belgeyi seçer.</li>
352     </ul>
353
354 </section>
355
356 </manualpage>