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