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