<-
Apache > HTTP Sunucusu > Belgeleme > Sürüm 2.4

URL’lerin Dosya Sistemi ile E?le?tirilmesi

Mevcut Diller:  en  |  fr  |  ja  |  ko  |  tr 

Bu belgede, bir istekte belirtilen URL’nin sunulacak dosyan?n dosya sistemindeki yerini bulmak i?in Apache HTTP Sunucusu taraf?ndan nas?l kullan?ld??? a??klanmaktad?r.

Support Apache!

Ayr?ca bak?n?z:

top

?lgili Modüller ve Y?nergeler

top

DocumentRoot

Yap?lan bir iste?e hangi dosyan?n sunulaca??na karar verirken httpd’nin ?ntan?ml? davran??? istek i?in URL yolunu (URL’den konak ismi ve port ayr?ld?ktan sonra kalan k?s?m) al?p bunu yap?land?rma dosyas?nda DocumentRoot y?nergesi ile belirtilen dizinin sonuna eklemektir. Bu nedenle, DocumentRoot alt?ndaki dizinler ve dosyalar sitenin d??ardan g?rünen temel belge a?ac?n? olu?tururlar.

?rne?in, DocumentRoot y?nergesine /var/http/html atanm?? olsun. http://example.com/bal?klar/zargana.html ?eklindeki bir istek i?in istemciye /var/http/html/bal?klar/zargana.html dosyas? sunulur.

Bir dizin istenirse (/ ile biten bir yol belirtilmesi durumu), sunulacak dosya DirectoryIndex y?nergesinde belirtilen dosya olacakt?r. ?rne?in, DocumentRoot yukar?daki gibi belirtimi? ve siz de ?unu belirtmi?seniz:

DirectoryIndex index.html index.php

http://www.example.com/fish/ iste?i, httpd'nin /var/www/html/fish/index.html dosyas?n? sunmaya, bu dosya bulunmuyorsa /var/www/html/fish/index.php dosyas?n? sunmaya ?al??mas?na sebep olacakt?r.

Bu dosyalar?n ikisi de bulunmuyorsa sonraki ad?m, mod_autoindex yüklü ve uygun ?ekilde yap?land?r?lm??sa bir dizin i?eri?i dosyas? sa?lamaya ?al??mak olacakt?r.

httpd ayr?ca, sunucunun birden fazla konak i?in istek kabul etmesini sa?layan sanal bar?nd?rmaya da muktedirdir. Bu durumda her sanal konak i?in ayr? bir DocumentRoot belirtilebilece?i gibi sunulacak i?eri?in istekte bulunulan IP adresi veya konak ismine dayanarak devingen olarak saptanmas?n? sa?layabilen mod_vhost_alias modülüyle gelen y?nergeler de kullan?labilir.

DocumentRoot y?nergesi yap?land?rma dosyan?zda ana sunucu i?in bir tane ve muhtemelen olu?turdu?unuz her sanal konak i?in de birer tanedir.

top

Belge K?k Dizini D???ndaki Dosyalar

Bazen dosya sisteminde do?rudan DocumentRoot alt?nda bulunmayan dosyalara da eri?im izni vermek gerekir. httpd’de bunu sa?laman?n ?e?itli yollar? vard?r. Unix sistemlerinde sembolik ba?lar sayesinde dosya sisteminin farkl? yerlerindeki dosyalar? ve dizinleri DocumentRoot alt?ndaym?? gibi g?stermek mümkündür. Options y?nergesine de?er olarak FollowSymLinks veya SymLinksIfOwnerMatch atanmad?k?a httpd olas? güvenlik a??klar?na kar?? ?ntan?ml? olarak sembolik ba?lar? izlemez.

Bundan ba?ka, dosya sisteminin farkl? par?alar?n? belge k?k dizini alt?nda g?stermek i?in Alias y?nergesi de kullan?labilir. ?rne?in,

Alias "/belgeler" "/var/http"

yap?land?rmas? ile http://example.com/belgeler/dizin/dosya.html URL’si i?in dosya sistemindeki /var/http/dizin/dosya.html dosyas? sunulacakt?r. Hedef dizindeki dosyalar? birer CGI beti?i olarak imlemesi d???nda ScriptAlias y?nergesi de ayn? ?ekilde ?al???r.

Biraz daha fazla esnekli?in gerekti?i durumlarda düzenli ifadelere dayal? e?le?meler sa?lamak üzere AliasMatch ve ScriptAliasMatch y?nergelerinin gücünden yararlan?labilir. ?rne?in,

ScriptAliasMatch "^/~([a-zA-Z0-9]+)/cgi-bin/(.+)" "/home/$1/cgi-bin/$2"

sat?r? sayesinde http://example.com/~user/cgi-bin/betik.cgi URL’si /home/user/cgi-bin/betik.cgi dosyas? ile e?le?tirilir ve dosya bir CGI beti?i olarak ?al??t?r?l?rd?.

top

Kullan?c? Dizinleri

Geleneksel olarak Unix sistemlerinde belli bir kullan?c?n?n (?rn, birisi) ev dizinine ~birisi/ ?eklinde at?fta bulunulabilir. mod_userdir modülü bu ?zelli?i site üzerinden kullan?c?lar?n ev dizinlerindeki dosyalar? ki?isel sayfalar olarak sunmalar?n? sa?lamak üzere kullan?r. ?rnek:

http://example.com/~birisi/dosya.html

Güvenlik sebebiyle kullan?c?lar?n ev dizinlerine do?rudan HTTP eri?imi vermek uygun olmaz. Bu bak?mdan, kullan?c?n?n ev dizini alt?nda HTTP eri?imi verilecek dosyalar?n bulundu?u dizini belirtmek i?in UserDir y?nergesi sa?lanm??t?r. ?ntan?ml? olan Userdir public_html yap?land?rmas? ile yukar?daki gibi bir URL kullan?c?n?n ev dizini (/etc/passwd dosyas?nda belirtilir) /home/birisi/ alt?nda yer alan /home/birisi/public_html/dosya.html dosyas? ile e?le?irdi.

Ev dizininin yerinin /etc/passwd dosyas?nda belirtilmedi?i sistemlerde kullan?lmak üzere Userdir y?nergesinin ba?ka kullan?m ?ekilleri de vard?r.

Baz? ki?iler (genellikle URL üzerinde %7e olarak kodlanmas? sebebiyle) "~" simgesini bi?imsiz bulabilir ve kullan?c? dizinlerini imlemek i?in ba?ka bir karakter kullanmay? tercih edebilirler. Bu i?levsellik mod_userdir taraf?ndan desteklenmemektedir. Ancak, kullan?c? dizinleri düzgün ?ekilde yap?land?r?lm??sa istenen etki AliasMatch y?nergesi ile sa?lanabilir. ?rne?in, http://example.com/sayfalar/birisi/dosya.html URL’si ile /home/birisi/public_html/dosya.html dosyas?n? e?lemek i?in AliasMatch y?nergesi ??yle kullan?labilirdi:

AliasMatch "^/sayfalar/([a-zA-Z0-9]+)(/(.*))?$" "/home/$1/public_html/$3"
top

URL Y?nlendirme

Yukar?daki b?lümlerde a??klanan yap?land?rma y?nergeleri httpd’ye i?eri?i dosya sisteminin belli bir yerinden al?p istemciye g?ndermesini s?yler. Bazen istemciye, istedi?i i?eri?e farkl? bir URL ile eri?ebilece?ini ve bu URL i?in ayr? bir istek yapmas? gerekti?ini bildirmek gerekir. Bu i?leme y?nlendirme ad? verilir ve bu i?levsellik Redirect y?nergesi ile sa?lan?r. ?rne?in, DocumentRoot alt?ndaki /foo/ dizininin i?eri?inin /bar/ ad?nda yeni bir dizine ta??nmas? halinde istemciye yeni konumun bildirilmesi ??yle sa?lanabilirdi:

Redirect permanent "/foo/" "http://example.com/bar/"

Bu atama sayesinde /foo/ ile ba?layan URL yollar? example.com sunucundaki /bar/ dizini alt?ndaki i?eri?e y?nlendirilmektedir. Y?nlendirmeyi ayn? sunucu üzerinde yapmak zorunda de?ilsiniz, bu y?nerge ile ba?ka bir sunucuya da y?nlendirme yapabilirsiniz.

httpd ayr?ca, yeniden yazma ile ilgili daha karma??k sorunlara ??züm olarak RedirectMatch diye bir y?nerge daha sa?lar. ?rne?in bir sitenin ba? sayfas?n? di?er isteklerden ayr? olarak farkl? bir siteye y?nlendirmek i?in y?nergeyi ??yle kullanabilirsiniz:

RedirectMatch permanent "^/$" "http://example.com/ilksayfa.html"

Bundan ba?ka, bir sitedeki tüm sayfalara yap?lan istekleri ba?ka bir siteye ge?ici olarak y?nlendirmek i?in ??yle bir ?ey yapabilirsiniz:

RedirectMatch temp ".*" "http://mesela.example.com/ilksayfa.html"
top

Kar?? Vekil

httpd ayr?ca, uzak sunuculardaki belgelerin yerel sunucunun URL alan?na getirilmesini de mümkün k?lar. Bu tekni?e HTTP sunucunun belgeleri uzak bir sunucudan al?p istemciye sunmas?n? sa?layarak bir vekil sunucu gibi davranmas? nedeniyle ters vekalet ad? verilir. Belgelerin istemciye ?zkayna??n bulundu?u sunucudan geliyormu? gibi de?ilde do?rudan iste?i yapt??? sunucudan geliyormu? gibi sunulmas? nedeniyle bu i?lem normal vekaletten farkl?d?r.

A?a??daki ?rnekte, istemci /foo/ dizini alt?ndan bir belge istemekte, sunucu ise bu belgeyi dahili.example.com üzerindeki /bar/ dizininden al?p istemciye yerel sunucudan geliyormu? gibi sunmaktad?r:

ProxyPass "/foo/" "http://dahili.example.com/bar/"
ProxyPassReverse "/foo/" "http://dahili.example.com/bar/"
ProxyPassReverseCookieDomain dahili.example.com harici.example.com
ProxyPassReverseCookiePath "/foo/" "/bar/"

ProxyPass sunucuyu uygun belgeleri almas? i?in yap?land?r?rken ProxyPassReverse y?nergesi dahili.example.com sunucusundan kaynaklanan y?nlendirmeleri yeniden yazar, b?ylece bunlar?n yerel sunucudaki yerleri belirlenmi? olur. Benzer ?ekilde, ProxyPassReverseCookieDomain ve ProxyPassReverseCookiePath y?nergeleri de arka sunucu taraf?ndan atanan ?erezleri yeniden yazar.

Yaln?z, belgelerin i?indeki hiperba?lar?n yeniden yaz?lmayaca??na dikkat ediniz. Dolay?s?yla, belge i?inde dahili.example.com’u ismiyle hedef alan mutlak hiperba?lar varsa bunlar istemci taraf?ndan vekil sunucudan de?il do?rudan dahili.example.com’dan istenecektir. Bir sayfan?n i?indeki bu ba?lar? (ve di?er i?eri?i) mod_substitute modülü kullan?larak istemciye sunuluyormu??as?na de?i?tirebilirsiniz.

Substitute "s/dahili\.example\.com/harici.example.com/i"

HTML ve XHTML’de hiperba?lar? daha bilgece yeniden yazabilen mod_proxy_html modülü de kullan?labilir. Yeniden yaz?lmas? gereken URL e?lemlerini olu?turman?z? sa?lar, b?ylece karma??k vekil senaryolar? olu?turulabilir.

top

Yeniden Yazma Motoru

Daha gü?lü ikameler gerekti?inde mod_rewrite modülü taraf?ndan sa?lanan yeniden yazma motoru i?e yarayabilir. Bu modüldeki y?nergeler sunulacak i?eri?in yerine karar vermek i?in kaynak IP adresi, taray?c? türü gibi iste?e ?zgü ?zellikleri kullan?rlar. mod_rewrite modülü buna ek olarak iste?in nas?l ele al?naca??na karar vermek i?in harici yaz?l?mlar? ve veritabanlar?n? kullanabilir. Yeniden yazma motoru yukar?da de?inilen ü? e?le?me türünü de uygulayabilecek yetenektedir: Dahili y?nlendirmeler (rumuzlar), harici y?nlendirmeler ve vekalet. mod_rewrite modülü taraf?ndan sa?lanan yeteneklerin ayr?nt?l? a??klamalar? ve bunlar?n kullan?m ?rnekleri ayr?nt?l? olarak mod_rewrite belgelerinde bulunmaktad?r.

top

Dosya orada yok

Ka??n?lmaz olarak, dosya sisteminde mevcut olmayan dosyalar i?in de istek yap?lacakt?r. Bunun ?e?itli sebepleri olabilir. Baz? durumlarda bu, belgelerin yerlerininin de?i?tirilmesinin bir sonucu olabilir. Bu durumda yap?lacak en iyi ?ey, istemciyi belgeyi yeni yerinden istemesi i?in bilgilendirmek amac?yla URL y?nlendirmesi kullanmakt?r. Bu ?ekilde, i?eri?in yeri de?i?se bile eski yer imlerinin ve hiperba?lar?n ?al??maya devam edeceklerinden emin olabilirsiniz.

"Dosya orada yok" ("File Not Found") hatalar?n?n di?er bir bildik sebebi de URL’lerin hiperba?larda veya do?rudan taray?c?da kas?tl? ya da kas?ts?z, yanl?? yaz?lmas?d?r. Bu tür sorunlarda yard?mc? olmas? i?in httpd mod_speling (sic) ad?nda bir modülle gelir. Bu modül etkin k?l?nd???nda htpd, "Dosya orada yok" ("File Not Found") hatalar?n?n ?nünü kesip ba?ka bir yerde benzer isimde bir dosya var m? diye bakar. B?yle bir dosya varsa, mod_speling istemciye dosyan?n do?ru yerini bildiren bir HTTP y?nlendirmesi yollar. Benzer ?ok say?da dosya varsa bunlar istemciye bir liste halinde sunulur.

mod_speling modülünün en yararl? ?zelliklerinden biri de dosya isimlerini harf büyüklü?üne duyars?z olarak arayabilmesidir. Dosya isimlerinde harf büyüklü?ünün ?nemli oldu?u Unix benzeri sistemler hakk?nda bilgisi olmayan kullan?c?lara sahip sistemlerin kullan?c?lar?na bu büyük yarar sa?lar. Fakat modülün URL düzeltmekten ba?ka ?eyler i?in de kullan?lmas?, istemcilerden gelen neredeyse her iste?in URL y?nlendirmesine konu olmas?na sebep olarak sunucunun yükünü artt?rabilir.

mod_dir modülü sanal URI'leri, onlar? sunan ger?ek kayna?a e?lemekte kullan?lan FallbackResource y?nergesini i?erir. Bir '?n denetleyici' ger?eklerken mod_rewrite modülünün kullan?lmas?n? sa?lamak i?in ?ok kullan??l?d?r.

Yerinde bulunmayan i?eri?in bulunmas? ?abalar?n?n tümü Apache’nin 404 (Dosya orada yok) HTTP durum kodlu bir hata sayfas? d?ndürmesine yol a?ar. Bu sayfan?n i?eri?i ErrorDocument y?nergesi ile denetlenebilir ve Hata Yan?tlar?n?n Ki?iselle?tirilmesi b?lümünde anlat?ld??? gibi olduk?a esnek bir ?ekilde ki?iselle?tirilebilir.

top

Di?er URL E?leme Modülleri

URL e?lemede kullan?labilecek di?er modüller:

Mevcut Diller:  en  |  fr  |  ja  |  ko  |  tr 

top

Yorum

Notice:
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 mailing lists.
白小姐透特期期