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="<-" alt="<-" src="/images/left.gif" /></a></div> 21<div id="path"> 22<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Sunucusu</a> > <a href="http://httpd.apache.org/docs/">Belgeleme</a> > <a href="../">Sürüm 2.2</a> > <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"> en </a> | 25<a href="/ko/vhosts/mass.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 26<a href="/tr/vhosts/mass.html" title="Türkçe"> tr </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><VirtualHost></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<VirtualHost 111.22.33.44><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</VirtualHost><br /> 64<VirtualHost 111.22.33.44><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</VirtualHost><br /> 71# blah blah blah<br /> 72<VirtualHost 111.22.33.44><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</VirtualHost> 79</code></p></div> 80 81 <p>Ana fikir, tüm durağan <code><VirtualHost></code> 82 yapılandırmalarını devingen olarak çalışan tek bir 83 <code><VirtualHost></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><VirtualHost></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<Directory /siteler/kurumsal><br /> 214<span class="indent"> 215 Options FollowSymLinks<br /> 216 AllowOverride All<br /> 217</span> 218</Directory><br /> 219<br /> 220<Directory /siteler/bireysel><br /> 221<span class="indent"> 222 Options FollowSymLinks<br /> 223 AllowOverride None<br /> 224</span> 225</Directory><br /> 226<br /> 227<VirtualHost 111.22.33.44><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</VirtualHost><br /> 237<br /> 238<VirtualHost 111.22.33.45><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</VirtualHost> 248</code></p></div> 249 250 <div class="note"><h3>Bilginize</h3> 251 <p>Eğer ilk <code><VirtualHost></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<Directory /siteler/hosts><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</Directory><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"> en </a> | 414<a href="/ko/vhosts/mass.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 415<a href="/tr/vhosts/mass.html" title="Türkçe"> tr </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&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>