1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><!--
4        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5              This file is generated from xml source: DO NOT EDIT
6        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7      -->
8<title>Devingen olarak Yapılandırılan Kitlesel Sanal Barındırma - Apache HTTP Sunucusu</title>
9<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="/style/css/prettify.css" />
12<script src="/style/scripts/prettify.js" type="text/javascript">
13</script>
14
15<link href="/images/favicon.ico" rel="shortcut icon" /></head>
16<body id="manual-page"><div id="page-header">
17<p class="menu"><a href="/mod/">Modüller</a> | <a href="/mod/directives.html">Yönergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="/glossary.html">Terimler</a> | <a href="/sitemap.html">Site Haritası</a></p>
18<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
19<img alt="" src="/images/feather.gif" /></div>
20<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
21<div id="path">
22<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../">Sürüm 2.2</a> &gt; <a href="./">Sanal Konaklar</a></div><div id="page-content"><div id="preamble"><h1>Devingen olarak Yapılandırılan Kitlesel Sanal Barındırma</h1>
23<div class="toplang">
24<p><span>Mevcut Diller: </span><a href="/en/vhosts/mass.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
25<a href="/ko/vhosts/mass.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
26<a href="/tr/vhosts/mass.html" title="Türkçe">&nbsp;tr&nbsp;</a></p>
27</div>
28
29
30    <p>Bu belgede sanal konakların sonu belirsiz bir şekilde artışı karşısında
31      Apache httpd sunucusunun nasıl daha verimli kullanılacağı açıklanmıştır.
32    </p>
33
34</div>
35<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#motivation">Amaç</a></li>
36<li><img alt="" src="/images/down.gif" /> <a href="#overview">Genel Bakış</a></li>
37<li><img alt="" src="/images/down.gif" /> <a href="#simple">Basit Devingen Sanal Konaklar</a></li>
38<li><img alt="" src="/images/down.gif" /> <a href="#homepages">Sanal Kişisel Sayfalar Sistemi</a></li>
39<li><img alt="" src="/images/down.gif" /> <a href="#combinations">Aynı Sunucuda Kişisel ve Kurumsal Sanal Konaklar</a></li>
40<li><img alt="" src="/images/down.gif" /> <a href="#ipbased">IP’ye dayalı sanal konakları daha verimli kılmak</a></li>
41<li><img alt="" src="/images/down.gif" /> <a href="#simple.rewrite"><code>mod_rewrite</code> ile Kurumsal Müşteriler Sistemi</a></li>
42<li><img alt="" src="/images/down.gif" /> <a href="#homepages.rewrite"><code>mod_rewrite</code> ile Kişisel Sayfalar Sistemi</a></li>
43<li><img alt="" src="/images/down.gif" /> <a href="#xtra-conf">Sanal konaklar için ayrı bir yapılandırma dosyası kullanmak</a></li>
44</ul><ul class="seealso"><li><a href="#comments_section">Yorum</a></li></ul></div>
45<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
46<div class="section">
47<h2><a name="motivation" id="motivation">Amaç</a></h2>
48
49    <p>Burada açıklanan teknikler, <code>httpd.conf</code> dosyanızın
50      örnekteki gibi, aslında hemen hemen birbirinin aynı çok sayıda
51      <code>&lt;VirtualHost&gt;</code> bölümü içereceği zaman yapılacaklar ile
52      ilgilidir.
53    </p>
54
55<div class="example"><p><code>
56NameVirtualHost 111.22.33.44<br />
57&lt;VirtualHost 111.22.33.44&gt;<br />
58<span class="indent">
59    ServerName                 musteri-1.dom<br />
60    DocumentRoot        /siteler/musteri-1.dom/belgeler<br />
61    ScriptAlias  /cgi-bin/  /siteler/musteri-1.dom/cgi-bin<br />
62</span>
63&lt;/VirtualHost&gt;<br />
64&lt;VirtualHost 111.22.33.44&gt;<br />
65<span class="indent">
66    ServerName                 musteri-2.dom<br />
67    DocumentRoot        /siteler/musteri-2.dom/belgeler<br />
68    ScriptAlias  /cgi-bin/  /siteler/musteri-2.dom/cgi-bin<br />
69</span>
70&lt;/VirtualHost&gt;<br />
71# blah blah blah<br />
72&lt;VirtualHost 111.22.33.44&gt;<br />
73<span class="indent">
74    ServerName                 musteri-N.dom<br />
75    DocumentRoot        /siteler/musteri-N.dom/belgeler<br />
76    ScriptAlias  /cgi-bin/  /siteler/musteri-N.dom/cgi-bin<br />
77</span>
78&lt;/VirtualHost&gt;
79</code></p></div>
80
81    <p>Ana fikir, tüm durağan <code>&lt;VirtualHost&gt;</code>
82      yapılandırmalarını devingen olarak çalışan tek bir
83      <code>&lt;VirtualHost&gt;</code> bölümüyle değiştirmektir. Bunun elbette
84      bazı getirileri olacaktır:</p>
85
86    <ol>
87      <li>Yapılandırma dosyanız küçüleceği için Apache daha çabuk
88        başlatılabilecek ve daha az bellek harcayacaktır.</li>
89
90      <li>Yeni sanal konakların eklenmesi, DNS’de yeni girdiler oluşturmak ve
91        dosya sisteminde bununla ilgili dizinleri açmak dışında biraz daha
92        basit olacaktır; en azından Apache’yi yeniden yapılandırmak ve yeniden
93        başlatmak zorunda kalmayacaksınız.</li>
94    </ol>
95
96    <p>Ana götürüsü ise her sanal konak için ayrı birer günlük dosyasına sahip
97      olamayacak olmanızdır. Öte yandan, dosya tanıtıcılarının sınırlı olması
98      nedeniyle bunu yapmayı zaten istemezsiniz. Günlük kayıtları için bir
99      fifo veya bir boru hattı oluşturmak ve diğer uçta çalışan bir süreç
100      vasıtasıyla günlükleri müşterilere paylaştırmak daha iyidir (ayrıca, bu,
101      istatistikleri toplamanızı da kolaylaştırır).</p>
102
103</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
104<div class="section">
105<h2><a name="overview" id="overview">Genel Bakış</a></h2>
106
107    <p>Bir sanal konak iki bilgiye bakarak belirlenir: IP adresi ve HTTP
108      isteğindeki <code>Host:</code> başlığının içeriği. Devingen sanal
109      barındırma tekniği, isteği yerine getirmek için kullanılacak dosya
110      yoluna bu bilgiyi kendiliğinden girmek esasına dayanır. Bu, Apache 2.0
111      ile <code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code> kullanarak oldukça kolay
112      yapılabileceği gibi <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> da kullanılabilir. Bu
113      modüllerin her ikisi de öntanımlı olarak devre dışıdır. Bu tekniği
114      kullanmak isterseniz  Apache’yi yeniden yapılandırıp derleyerek bu iki
115      modülü etkin duruma getirmeniz gerekir.</p>
116
117    <p>Devingen sanal konağı normal bir sanal konak gibi göstermek için bazı
118      şeyleri ’göstermelik’ olarak yapmak gerekir. Bunlardan en önemlisi,
119      Apache tarafından göreli URL’lerden normal URL’leri ve benzerlerini
120      üretmek için kullanılan sunucu ismidir. Sunucu ismi
121      <code>ServerName</code> yönergesi ile yapılandırılır ve CGI’ler
122      tarafından <code>SERVER_NAME</code> ortam değişkeni üzerinden
123      kullanılır. Çalışma anındaki asıl değer <code class="directive"><a href="/mod/core.html#usecanonicalname">UseCanonicalName</a></code> yönergesi tarafından denetlenir.
124      <code>UseCanonicalName Off</code> olduğunda sunucu ismi isteğin
125      <code>Host:</code> başlık alanından elde edilir. <code>UseCanonicalName
126      DNS</code> belirtilmişse, sunucu ismi, sanal konağın IP adresinden
127      tersine DNS sorgusu yapılarak elde edilir. Birincisi isme dayalı sanal
128      konaklar tarafından ikincisi ise IP’ye dayalı sanal konaklar tarafından
129      kullanılır. Eğer Apache, istekte <code>Host:</code> başlığının olmayışı
130      veya DNS sorgusunun başarısız olması sebebiyle sunucu ismini elde
131      edemezse son çare olarak <code>ServerName</code> yönergesinde yazılı
132      değeri kullanır.</p>
133
134    <p>‘Göstermelik’ yapılan şeylerden biri de <code>DocumentRoot</code>
135      yönergesi ile yapılandırılan belge kök dizini olup CGI’ler tarafından
136      <code>DOCUMENT_ROOT</code> ortam değişkeni üzerinden kullanılır. Normal
137      yapılandırmada <code class="module"><a href="/mod/core.html">core</a></code> modülü tarafından dosya isimlerini
138      URI’lere eşlerken kullanılır. Fakat sunucu devingen sanal konakları
139      kullanmak üzere yapılandırıldığında, eşleştirmeyi farklı yollardan yapan
140      başka bir modül devreye girer (<code>mod_vhost_alias</code> veya
141      <code>mod_rewrite</code>). <code>DOCUMENT_ROOT</code> ortam değişkenine
142      değerini atamaktan sorumlu olan bu iki modülden biri kullanılmazsa CGI
143      veya SSI belgeleri yanlış değerlerle üretilirler.</p>
144
145</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
146<div class="section">
147<h2><a name="simple" id="simple">Basit Devingen Sanal Konaklar</a></h2>
148
149    <p>Yukarıda <a href="#motivation">Amaç</a> bölümünde özetlenen sanal konak
150      düzenlemesinin <code>mod_vhost_alias</code> kullanarak daha soysal bir
151      tarzda gerçekleştirilmiş halini içeren <code>httpd.conf</code> bölümü
152      aşağıdadır.</p>
153
154<div class="example"><p><code>
155# sunucu ismini Host: başlığından elde edelim<br />
156UseCanonicalName Off<br />
157<br />
158# Bu günlükleme biçiminde ilk alana bakarak<br />
159# sanal konak günlükleri ayrıştırılabilir<br />
160LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon<br />
161CustomLog logs/access_log vcommon<br />
162<br />
163# istekleri yerine getirmek için kullanılacak<br />
164# dosya isimlerine sunucu ismini ekleyelim<br />
165VirtualDocumentRoot /siteler/%0/belgeler<br />
166VirtualScriptAlias  /siteler/%0/cgi-bin
167</code></p></div>
168
169    <p>Bu yapılandırmayı IP’ye dayalı sanal konaklar için kullanmak isterseniz
170      <code>UseCanonicalName Off</code> yerine <code>UseCanonicalName
171      DNS</code> yazmanız yeterlidir. Böylece dosya ismine eklenecek konak
172      ismi sanal konağın IP adresinden türetilir.</p>
173
174</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
175<div class="section">
176<h2><a name="homepages" id="homepages">Sanal Kişisel Sayfalar Sistemi</a></h2>
177
178    <p>Bu sistem, yukarıdaki yapılandırmanın bir ISS’nin kişisel sayfalar
179      sunucusuna uyarlanmasından başka bir şey değildir. Biraz daha karmaşık
180      bir yapılandırma ile dosya isimlerine <code>/home/kullanıcı/</code>
181      dizinlerini ekleyebiliriz. Farklı olarak her sanal konak için bir tane
182      değil hepsi için bir tane <code>cgi-bin</code> olacaktır.</p>
183
184<div class="example"><p><code>
185# Son bölüm hariç yukarıdaki yapılandırma, burada...<br />
186<br />
187# sunucu ismine eklenecek dosya isimlerini oluşturalım<br />
188VirtualDocumentRoot /siteler/%2/belgeler<br />
189<br />
190# ortak cgi-bin dizini<br />
191ScriptAlias  /cgi-bin/  /siteler/std-cgi/<br />
192</code></p></div>
193
194    <p><code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code> belgesinde daha karmaşık
195      <code>VirtualDocumentRoot</code> örnekleri vardır.</p>
196
197</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
198<div class="section">
199<h2><a name="combinations" id="combinations">Aynı Sunucuda Kişisel ve Kurumsal Sanal Konaklar</a></h2>
200
201    <p>Daha karmaşık ayarlamalar yaparak Apache’inin normal
202      <code>&lt;VirtualHost&gt;</code> bölümlerini farklı kitlesel sanal konak
203      yapılandırmaları için kullanabilirsiniz. Örneğin, bireysel
204      müşterileriniz için bir IP adresiniz, kurumsal müşterileriniz için de
205      başka bir IP adresiniz olsun. Her biri için ayrı ayrı sanal konaklar
206      ayarlamak yerine aşağıdaki gibi bir yapılandırma kullanabilirsiniz:</p>
207
208<div class="example"><p><code>
209UseCanonicalName Off<br />
210<br />
211LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon<br />
212<br />
213&lt;Directory /siteler/kurumsal&gt;<br />
214<span class="indent">
215    Options FollowSymLinks<br />
216    AllowOverride All<br />
217</span>
218&lt;/Directory&gt;<br />
219<br />
220&lt;Directory /siteler/bireysel&gt;<br />
221<span class="indent">
222    Options FollowSymLinks<br />
223    AllowOverride None<br />
224</span>
225&lt;/Directory&gt;<br />
226<br />
227&lt;VirtualHost 111.22.33.44&gt;<br />
228<span class="indent">
229    ServerName kurumsal.iss.dom<br />
230    <br />
231    CustomLog logs/access_log.kurumsal vcommon<br />
232    <br />
233    VirtualDocumentRoot /siteler/kurumsal/%0/belgeler<br />
234    VirtualScriptAlias  /siteler/kurumsal/%0/cgi-bin<br />
235</span>
236&lt;/VirtualHost&gt;<br />
237<br />
238&lt;VirtualHost 111.22.33.45&gt;<br />
239<span class="indent">
240    ServerName bireysel.iss.dom<br />
241    <br />
242    CustomLog logs/access_log.bireysel vcommon<br />
243    <br />
244    VirtualDocumentRoot /siteler/bireysel/%0/belgeler<br />
245    ScriptAlias         /cgi-bin/ /siteler/std-cgi/<br />
246</span>
247&lt;/VirtualHost&gt;
248</code></p></div>
249
250    <div class="note"><h3>Bilginize</h3>
251      <p>Eğer ilk <code>&lt;VirtualHost&gt;</code> bölümü bir <code class="directive"><a href="/mod/core.html#servername">ServerName</a></code> yönergesi içermezse ilgili IP
252        için ters DNS sorgusu yapılır. Eğer sorgudan elde edilen isim
253        sunucunun ismi değilse bu istenmeyen duruma bir çözüm olarak bir
254        bilgilendirme bölümü (<code>ServerName isimsiz.iss.dom</code>)
255        eklenebilir.</p>
256    </div>
257
258</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
259<div class="section">
260<h2><a name="ipbased" id="ipbased">IP’ye dayalı sanal konakları daha verimli kılmak</a></h2>
261
262    <p><a href="#simple">İlk örnekte</a> IP’ye dayalı sanal konaklar için
263      kullanılmak istenirse yapılandırmada neyin nasıl değiştirileceği
264      belirtilmişti. Her istek için ayrı bir DNS sorgusu gerekeceğinden bu
265      başarım düşmesine yol açar. DNS sorgusu ihtiyacını ortadan kaldırmak
266      için, bir çözüm olarak dosya sistemi, konak isimleri yerine IP
267      adreslerine göre düzenlenebilir. Günlük kayıtları da IP adreslerine göre
268      ayrıştırılacak şekilde ayarlanabilir.</p>
269
270<div class="example"><p><code>
271# Sunucu ismini IP adresinden ters DNS sorgusu ile elde edelim<br />
272UseCanonicalName DNS<br />
273<br />
274# Günlük kayıtları IP adreslerine göre ayrıştırılabilsin<br />
275LogFormat "%A %h %l %u %t \"%r\" %s %b" vcommon<br />
276CustomLog logs/access_log vcommon<br />
277<br />
278# dosya isimleri IP adreslerini içersin<br />
279VirtualDocumentRootIP /siteler/%0/belgeler<br />
280VirtualScriptAliasIP  /siteler/%0/cgi-bin<br />
281</code></p></div>
282
283</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
284<div class="section">
285<h2><a name="simple.rewrite" id="simple.rewrite"><code>mod_rewrite</code> ile Kurumsal Müşteriler Sistemi</a></h2>
286
287    <p>Buradaki <code>httpd.conf</code> bölümü de <a href="#simple">ilk
288      örnekteki</a> gibi elde edilmiştir. İlk yarı, bazı değişiklikler dışında
289      yukarıdaki örneğe çok benzer. Bu değişiklikler yapılandırmanın
290      <code>mod_rewrite</code> bölümünün düzgün çalışması ve geriye doğru
291      uyumluluk için gereklidir. İkinci yarı, asıl işi yapan
292      <code>mod_rewrite</code> yapılandırmasını içerir.</p>
293
294    <p>Biraz uzmanlık gerektiren bazı kısımlar var: Öntanımlı olarak
295      <code>mod_rewrite</code> diğer (<code>mod_alias</code>, vs. gibi) URI
296      dönüşüm modüllerinden önce çalışır. Dolayısıyla bu modülleri kullanmak
297      isterseniz, <code>mod_rewrite</code>’ı bunlara izin verecek şekilde
298      yapılandırmalısınız. Ayrıca her devingen sanal konağa eşdeğer bir
299      <code>ScriptAlias</code> yapmak için de biraz büyü yapmak gerekir.</p>
300
301<div class="example"><p><code>
302# Sunucu ismini Host: başlığınıdan alalım.<br />
303UseCanonicalName Off<br />
304<br />
305# Günlük dosyasından bilgileri ayıklayabilelim.<br />
306LogFormat "%{Host}i %h %l %u %t \"%r\" %s %b" vcommon<br />
307CustomLog logs/access_log vcommon<br />
308<br />
309&lt;Directory /siteler/hosts&gt;<br />
310<span class="indent">
311    # ScriptAlias için yaptıklarımızla CGI betiklerini<br />
312    # çalışmaya zorlayamayacağımızdan ExecCGI burada gerekli.<br />
313    Options FollowSymLinks ExecCGI<br />
314</span>
315&lt;/Directory&gt;<br />
316<br />
317# İşin zor yanına geldik.<br />
318<br />
319RewriteEngine On<br />
320<br />
321# Host: başlığından elde edilen sunucu isminde harf<br />
322# büyüklükleri çeşitli olabilir. Hepsini küçük harf yapalım.<br />
323RewriteMap  lowercase  int:tolower<br />
324<br />
325## önce normal belgelerle anlaşalım:<br />
326# Alias /icons/ çalışsın - diğer rumuzlar için yineleyelim<br />
327RewriteCond  %{REQUEST_URI}  !^/icons/<br />
328# CGI’ler de çalışsın.<br />
329RewriteCond  %{REQUEST_URI}  !^/cgi-bin/<br />
330# Biraz da büyü yapalım.<br />
331RewriteRule  ^/(.*)$  /siteler/${lowercase:%{SERVER_NAME}}/belgeler/$1<br />
332<br />
333## Artık CGI’lerle anlaşabiliriz. - Bir MIME türü isteyelim.<br />
334RewriteCond  %{REQUEST_URI}  ^/cgi-bin/<br />
335RewriteRule  ^/(.*)$  /siteler/${lowercase:%{SERVER_NAME}}/cgi-bin/$1  [T=application/x-httpd-cgi]<br />
336<br />
337# Bu kadar!
338</code></p></div>
339
340</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
341<div class="section">
342<h2><a name="homepages.rewrite" id="homepages.rewrite"><code>mod_rewrite</code> ile Kişisel Sayfalar Sistemi</a></h2>
343
344    <p>Burada da <a href="#homepages">ikinci örnekte</a> yaptıklarımızı
345      yapıyoruz.</p>
346
347<div class="example"><p><code>
348RewriteEngine on<br />
349<br />
350RewriteMap   lowercase  int:tolower<br />
351<br />
352# CGI’ler çalışsın.<br />
353RewriteCond  %{REQUEST_URI}  !^/cgi-bin/<br />
354<br />
355# konak ismi doğru mu bakalım yoksa RewriteRule çalışmaz.<br />
356RewriteCond  ${lowercase:%{SERVER_NAME}}  ^www\.[a-z-]+\.isp\.dom$<br />
357<br />
358# URI’nin başına sanal konak ismini ekleyelim.<br />
359# [C], bunu bitirdikten sonra, sonraki rewrite ile devam et demek.<br />
360RewriteRule  ^(.+)  ${lowercase:%{SERVER_NAME}}$1  [C]<br />
361<br />
362# Artık asıl dosya ismini oluşturabiliriz.<br />
363RewriteRule  ^www\.([a-z-]+)\.isp\.dom/(.*) /home/$1/$2<br />
364<br />
365# Ortak CGI dizinini tanımlayalım.<br />
366ScriptAlias  /cgi-bin/  /siteler/std-cgi/
367</code></p></div>
368
369</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
370<div class="section">
371<h2><a name="xtra-conf" id="xtra-conf">Sanal konaklar için ayrı bir yapılandırma dosyası kullanmak</a></h2>
372
373    <p>Burada, sanal konak isimlerinden belge kök dizini elde ederken
374      <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> modülünün daha gelişkin özelliklerinden
375      yararlanarak isimleri ayrı bir dosyadan okutacağız. Bu, esnekliği
376      artırır ama daha karmaşık bir yapılandırma gerekir.</p>
377
378    <p>Aşağıdaki içeriğe sahip bir <code>vhost.map</code>dosyamız olsun:</p>
379
380<div class="example"><p><code>
381musteri-1.dom  /siteler/kurumsal/1<br />
382musteri-2.dom  /siteler/kurumsal/2<br />
383# ...<br />
384musteri-N.dom  /siteler/kurumsal/N<br />
385</code></p></div>
386
387    <p><code>httpd.conf</code> dosyamız da şunları içerecektir:</p>
388
389<div class="example"><p><code>
390RewriteEngine on<br />
391<br />
392RewriteMap   lowercase  int:tolower<br />
393<br />
394# Eşlem dosyasını tanımlayalım<br />
395RewriteMap   vhost      txt:/siteler/conf/vhost.map<br />
396<br />
397# Rumuzları yukarıdaki gibi halledelim.<br />
398RewriteCond  %{REQUEST_URI}               !^/icons/<br />
399RewriteCond  %{REQUEST_URI}               !^/cgi-bin/<br />
400RewriteCond  ${lowercase:%{SERVER_NAME}}  ^(.+)$<br />
401# Eşlemeyi dosyalar için de yapalım.<br />
402RewriteCond  ${vhost:%1}                  ^(/.*)$<br />
403RewriteRule  ^/(.*)$                      %1/belgeler/$1<br />
404<br />
405RewriteCond  %{REQUEST_URI}               ^/cgi-bin/<br />
406RewriteCond  ${lowercase:%{SERVER_NAME}}  ^(.+)$<br />
407RewriteCond  ${vhost:%1}                  ^(/.*)$<br />
408RewriteRule  ^/(.*)$                      %1/cgi-bin/$1
409</code></p></div>
410
411</div></div>
412<div class="bottomlang">
413<p><span>Mevcut Diller: </span><a href="/en/vhosts/mass.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
414<a href="/ko/vhosts/mass.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
415<a href="/tr/vhosts/mass.html" title="Türkçe">&nbsp;tr&nbsp;</a></p>
416</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Yorum</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;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 <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
417<script type="text/javascript"><!--//--><![CDATA[//><!--
418var comments_shortname = 'httpd';
419var comments_identifier = 'http://httpd.apache.org/docs/2.2/vhosts/mass.html';
420(function(w, d) {
421    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
422        d.write('<div id="comments_thread"><\/div>');
423        var s = d.createElement('script');
424        s.type = 'text/javascript';
425        s.async = true;
426        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
427        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
428    }
429    else { 
430        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
431    }
432})(window, document);
433//--><!]]></script></div><div id="footer">
434<p class="apache">Copyright 2013 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
435<p class="menu"><a href="/mod/">Modüller</a> | <a href="/mod/directives.html">Yönergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="/glossary.html">Terimler</a> | <a href="/sitemap.html">Site Haritası</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
436if (typeof(prettyPrint) !== 'undefined') {
437    prettyPrint();
438}
439//--><!]]></script>
440</body></html>