blob: 7d6cf90e021c966b2cf29c609322c48b1fc5b5e3 [file] [log] [blame]
<?xml version="1.0" encoding="EUC-KR"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko"><head>
<meta content="text/html; charset=EUC-KR" http-equiv="Content-Type" />
<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>³»¿ëÇù»ó (Content Negotiation) - Apache HTTP Server Version 2.5</title>
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<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" />
<script src="./style/scripts/prettify.min.js" type="text/javascript">
</script>
<link href="./images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/">¸ðµâ</a> | <a href="./mod/quickreference.html">Áö½Ã¾îµé</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">¿ë¾î</a> | <a href="./sitemap.html">»çÀÌÆ®¸Ê</a></p>
<p class="apache">Apache HTTP Server Version 2.5</p>
<img alt="" src="./images/feather.png" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.5</a></div><div id="page-content"><div id="preamble"><h1>³»¿ëÇù»ó (Content Negotiation)</h1>
<div class="toplang">
<p><span>°¡´ÉÇÑ ¾ð¾î: </span><a href="./en/content-negotiation.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./fr/content-negotiation.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a> |
<a href="./ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/content-negotiation.html" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/content-negotiation.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div>
<div class="outofdate">ÀÌ ¹®¼­´Â ÃÖ½ÅÆÇ ¹ø¿ªÀÌ ¾Æ´Õ´Ï´Ù.
ÃÖ±Ù¿¡ º¯°æµÈ ³»¿ëÀº ¿µ¾î ¹®¼­¸¦ Âü°íÇϼ¼¿ä.</div>
<p>¾ÆÆÄÄ¡´Â HTTP/1.1 ±Ô¾à¿¡ ±â¼úµÈ ³»¿ëÇù»ó(content
negotiation)À» Áö¿øÇÑ´Ù. ³»¿ëÇù»óÀº media type, ¾ð¾î, ¹®ÀÚÁýÇÕ,
ÀÎÄÚµù µî¿¡ ´ëÇØ ºê¶ó¿ìÀú°¡ Á¦°øÇÑ ¼±È£µµ¿¡ µû¶ó ÀÚ¿øÀÇ
°¡Àå ÀûÇÕÇÑ Ç¥ÇöÀ» ¼±ÅÃÇÑ´Ù. ¶Ç ºÒ¿ÏÀüÇÑ Çù»ó Á¤º¸¸¦ º¸³»´Â
ºê¶ó¿ìÀúÀÇ ¿äûÀ» Áö´ÉÀûÀ¸·Î ó¸®ÇÏ´Â ±â´Éµµ ÀÖ´Ù.</p>
<p>±âº»ÀûÀ¸·Î ÄÄÆÄÀϵǴ <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code>
¸ðµâÀÌ ³»¿ëÇù»ó ±â´ÉÀ» Á¦°øÇÑ´Ù.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#about">³»¿ëÇù»ó¿¡ ´ëÇØ</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#negotiation">¾ÆÆÄÄ¡ÀÇ Çù»ó</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#methods">Çù»ó¹æ¹ý</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#better">Ç°Áú°è¼ö Á¶ÀÛÇϱâ</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#extensions">ÀÚ¿¬½º·¯¿î(transparent) ³»¿ëÇù»óÀÇ È®Àå</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#naming">ÇÏÀÌÆÛ¸µÅ©¿Í À̸§±ÔÄ¢¿¡ ´ëÇÏ¿©</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#caching">ij½¬¿¡ ´ëÇÏ¿©</a></li>
</ul><h3>Âü°í</h3><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="about" id="about">³»¿ëÇù»ó¿¡ ´ëÇØ</a></h2>
<p>ÀÚ¿øÀº ¿©·¯ ´Ù¸¥ Ç¥ÇöÀ» °¡Áú ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, ´Ù¸¥
¾ð¾î³ª ´Ù¸¥ media type ȤÀº µÑ ¸ðµÎ°¡ ´Ù¸¥ Ç¥ÇöµéÀÌ ÀÖÀ»
¼ö ÀÖ´Ù. °¡Àå Àû´çÇÑ Ç¥ÇöÀ» ¼±ÅÃÇÏ´Â ÇÑ°¡Áö ¹æ¹ýÀº »ç¿ëÀÚ¿¡°Ô
¸ñ·Ï ÆäÀÌÁö¸¦ º¸¿©ÁÖ°í ¼±ÅÃÇÏ°Ô ÇÏ´Â °ÍÀÌ´Ù. ±×·¯³ª ¼­¹ö°¡
ÀÚµ¿À¸·Î ¼±ÅÃÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. ÀÌ´Â ºê¶ó¿ìÀú°¡ ¿äûÀÇ
ÀϺηΠ±×µéÀÌ ¼±È£Çϴ ǥÇö¿¡ ´ëÇÑ Á¤º¸¸¦ º¸³»±â¶§¹®¿¡
°¡´ÉÇÏ´Ù. ¿¹¸¦ µé¾î, ºê¶ó¿ìÀú´Â °¡´ÉÇÑÇÑ ºÒ¾î·Î, ±×·¯³ª
¾ø´Ù¸é ¿µ¾î·Î Á¤º¸¸¦ º¸°í½Í´Ù°í ¾Ë·ÁÁÙ ¼ö ÀÖ´Ù. ºê¶ó¿ìÀú´Â
¿äûÀÇ Çì´õ·Î ±×µéÀÇ ±âÈ£¸¦ ³ªÅ¸³½´Ù. ¿ÀÁ÷ ºÒ¾î·ÎµÈ Ç¥Çö¸¸À»
¿äûÇÑ´Ù¸é ºê¶ó¿ìÀú´Â ´ÙÀ½°ú °°ÀÌ º¸³½´Ù.</p>
<div class="example"><p><code>Accept-Language: fr</code></p></div>
<p>ÀÌ·± ±âÈ£´Â Ç¥ÇöÀÌ ¾ð¾îº°·Î ´Ù¸¦ °æ¿ì¿¡¸¸ °í·ÁµÈ´Ù.</p>
<p>´ÙÀ½Àº ´õ º¹ÀâÇÑ ¿äûÀÇ ¿¹·Î ºê¶ó¿ìÀú°¡ ºÒ¾î¿Í ¿µ¾î¸¦
¹ÞÀ» ¼ö ÀÖÁö¸¸, ºÒ¾î¸¦ ´õ ¼±È£ÇÏ°í, ¿©·¯ media typeÀ» ¹ÞÀ»
¼ö ÀÖÁö¸¸, ÀÏ¹Ý ÅؽºÆ® º¸´Ù´Â HTML, ´Ù¸¥ media type º¸´Ù´Â
GIF¿Í JPEGÀ» ¼±È£ÇÑ´Ù°í ¾Ë·ÁÁØ´Ù.</p>
<div class="example"><p><code>
Accept-Language: fr; q=1.0, en; q=0.5<br />
Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg; q=0.6, image/*; q=0.5, */*; q=0.1
</code></p></div>
<p>¾ÆÆÄÄ¡´Â HTTP/1.1 ±Ô¾à¿¡ Á¤ÀÇµÈ '¼­¹ö ÁÖµµ(server driven)'
³»¿ëÇù»óÀ» Áö¿øÇÑ´Ù. ¾ÆÆÄÄ¡´Â <code>Accept</code>,
<code>Accept-Language</code>, <code>Accept-Charset</code>,
<code>Accept-Encoding</code> ¿äû Çì´õ¸¦ ¸ðµÎ Áö¿øÇÑ´Ù.
¶Ç, ¾ÆÆÄÄ¡´Â RFC 2295¿Í RFC 2296¿¡ Á¤ÀÇµÈ ½ÇÇèÀûÀÎ ³»¿ëÇù»óÀÎ
'ÀÚ¿¬½º·¯¿î(transparent)' ¿äû Çì´õµµ Áö¿øÇÑ´Ù. ±×·¯³ª ÀÌ
RFC¿¡ Á¤ÀÇµÈ '±â´É Çù»ó(feature negotiation)'Àº Áö¿øÇÏÁö
¾Ê´Â´Ù.</p>
<p><strong>ÀÚ¿ø(resource)</strong>Àº (RFC 2396) URI·Î ±¸º°ÇÏ´Â
°³³äÀûÀÎ Á¸Àç´Ù. ¾ÆÆÄÄ¡¿Í °°Àº À¥¼­¹ö´Â ÀÚ¿øÀÇ
<strong>Ç¥Çö(representations)</strong>À» Á¦°øÇÑ´Ù. Ç¥ÇöÀº
ÁöÁ¤µÈ media type, ¹®ÀÚÁýÇÕ, ÀÎÄÚµù µîÀ» °¡Áø ¹ÙÀÌÆ®µé·Î
µÇÀÖ´Ù. ÀÚ¿øÀº ¿©·¯ Ç¥Çö°ú (¶§·Î´Â ¾øÀ» ¼öµµ ÀÖ´Ù) ¿¬°üµÈ´Ù.
ÀÚ¿ø¿¡ ¿©·¯ Ç¥ÇöÀÌ ÀÖ´Ù¸é ÀÚ¿øÀ»
<strong>Çù»ó°¡´ÉÇÏ´Ù°í(negotiable)</strong> ºÎ¸£¸ç, À̶§
°¢ Ç¥ÇöÀ» <strong>º¯Çü(variant)</strong>À̶ó°í ÇÑ´Ù.
Çù»ó°¡´ÉÇÑ ÀÚ¿øÀÇ º¯Çü Á¾·ù¸¦ Çù»óÀÇ
<strong>¹üÀ§(dimension)</strong>¶ó°í ÇÑ´Ù.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="negotiation" id="negotiation">¾ÆÆÄÄ¡ÀÇ Çù»ó</a></h2>
<p>ÀÚ¿øÀ» Çù»óÇϱâÀ§ÇØ ¼­¹ö´Â °¢ º¯Çü¿¡ ´ëÇÑ Á¤º¸°¡ ÇÊ¿äÇÏ´Ù.
´ÙÀ½ µÎ°¡Áö ¹æ¹ýÁß Çϳª·Î Á¤º¸¸¦ ¾ò´Â´Ù:</p>
<ul>
<li>º¯ÇüÀ» ´ãÀº ÆÄÀϵéÀ» Á÷Á¢ ¿­°ÅÇÑ type mapÀ» (<em>¿¹¸¦
µé¾î</em>, <code>*.var</code> ÆÄÀÏ) »ç¿ëÇϰųª,</li>
<li>Á÷Á¢ ÁöÁ¤ÇÏÁö¾Ê¾Æµµ ¼­¹ö°¡ ÆÄÀÏ¸í¿¡¼­ ±ÔÄ¢À» ã¾Æ¼­
°á°ú¸¦ ¼±ÅÃÇÏ´Â 'MultiViews'¸¦ »ç¿ëÇÑ´Ù.</li>
</ul>
<h3><a name="type-map" id="type-map">type-map ÆÄÀÏ »ç¿ëÇϱâ</a></h3>
<p>type mapÀº <code>type-map</code>À̶õ Çڵ鷯¿Í ¿¬°áµÈ
(ȤÀº ÀÌÀü ¾ÆÆÄÄ¡ ¼³Á¤°ú ȣȯÀ» À§ÇØ MIME typeÀÌ
<code>application/x-type-map</code>ÀÎ) ¹®¼­´Ù. ÀÌ ±â´ÉÀ»
»ç¿ëÇÏ·Á¸é ¼³Á¤¿¡¼­ <code>type-map</code> Çڵ鷯¿¡ ´ëÇÑ
ÆÄÀÏ È®ÀåÀÚ¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù. ¼­¹ö ¼³Á¤ÆÄÀÏ¿¡ ´ÙÀ½°ú °°ÀÌ
¼³Á¤ÇÏ´Â °ÍÀÌ ÁÁ´Ù.</p>
<div class="example"><p><code>AddHandler type-map .var</code></p></div>
<p>Type map ÆÄÀÏÀº ÇØ´çÇÏ´Â ÀÚ¿ø°ú À̸§ÀÌ °°¾Æ¾ß ÇÏ°í,
°¢ º¯Çü¿¡ ´ëÇÑ Ç׸ñÀÌ ÀÖ¾î¾ß ÇÑ´Ù. Ç׸ñÀº ¿©·¯ HTTPÇü½Ä
Çì´õ ÁÙ·Î ±¸¼ºµÈ´Ù. º¯Çü¿¡ ´ëÇÑ °¢°¢ÀÇ Ç׸ñµéÀº ºóÁÙ·Î
±¸ºÐÇÑ´Ù. Ç׸ñ¾È¿¡¼­ ºóÁÙÀ» »ç¿ëÇÒ ¼ö ¾ø´Ù. (ÀÌ·¸°Ô ÇÒ
ÇÊ¿ä°¡ ¾ø°í, À־ ¹«½ÃÇÏÁö¸¸) ¿©·¯ Ç׸ñÀÌ °øÅëÀ¸·Î °¡Áö°í
ÀÖ´Â ³»¿ëÀ¸·Î map ÆÄÀÏÀ» ½ÃÀÛÇÏ´Â °ÍÀÌ º¸ÅëÀÌ´Ù. ´ÙÀ½Àº
map ÆÄÀÏ ¿¹´Ù. ÀÌ ÆÄÀÏÀÇ À̸§Àº <code>foo.var</code>·Î,
<code>foo</code>¶ó´Â ÀÚ¿øÀ» ¼³¸íÇÑ´Ù.</p>
<div class="example"><p><code>
URI: foo<br />
<br />
URI: foo.en.html<br />
Content-type: text/html<br />
Content-language: en<br />
<br />
URI: foo.fr.de.html<br />
Content-type: text/html;charset=iso-8859-2<br />
Content-language: fr, de<br />
</code></p></div>
<p>typemap ÆÄÀÏÀÌ ÆÄÀϸí È®ÀåÀÚ º¸´Ù, ½ÉÁö¾î Multiviews¸¦
»ç¿ëÇÏ¿©µµ, ¿ì¼±±ÇÀ» °¡ÁüÀ» ÁÖÀÇÇ϶ó. º¯ÇüÀÌ ¼­·Î ´Ù¸¥ Ç°ÁúÀ»
°¡Áø´Ù¸é, ´ÙÀ½°ú °°ÀÌ (JPEG, GIF, ASCII-art¿¡ ÇØ´çÇÏ´Â)
media type¿¡ "qs" ÆĶó¹ÌÅÍ·Î Ç°Áú(source quality)À» Ç¥½ÃÇÒ
¼ö ÀÖ´Ù:</p>
<div class="example"><p><code>
URI: foo<br />
<br />
URI: foo.jpeg<br />
Content-type: image/jpeg; qs=0.8<br />
<br />
URI: foo.gif<br />
Content-type: image/gif; qs=0.5<br />
<br />
URI: foo.txt<br />
Content-type: text/plain; qs=0.01<br />
</code></p></div>
<p>qs °ªÀº 0.000¿¡¼­ 1.000 »çÀÌ´Ù. qs °ªÀÌ 0.000ÀÎ º¯ÇüÀº
Àý´ë ¼±ÅõÇÁö ¾ÊÀ½À» ÁÖÀÇÇ϶ó. 'qs' °ªÀÌ ¾ø´Â º¯ÇüÀº 1.0À¸·Î
Ãë±ÞµÈ´Ù. qs °ªÀº Ŭ¶óÀ̾ðÆ®ÀÇ ´É·Â°ú´Â °ü°è¾øÀÌ ´Ù¸¥ º¯Çüµé°ú
ºñ±³ÇÏ¿© ±× º¯ÇüÀÇ »ó´ëÀûÀÎ 'Ç°Áú'À» ³ªÅ¸³½´Ù. ¿¹¸¦ µé¾î,
»çÁøÀ» ³ªÅ¸³»·Á´Â °æ¿ì JPEG ÆÄÀÏÀÌ ASCII ÆÄÀϺ¸´Ù´Â Ç×»ó
³ôÀº Ç°ÁúÀ» °¡Áø´Ù. ±×·¯³ª ÀÚ¿øÀÌ ¿ø·¡ ASCII art¿´´Ù¸é
ASCII Ç¥ÇöÀÌ JPEG Ç¥Çöº¸´Ù ´õ ³ôÀº Ç°ÁúÀ» °¡Áú ¼ö ÀÖ´Ù.
±×·¯¹Ç·Î ¾î¶² º¯ÇüÀÇ qs °ªÀº Ç¥ÇöÇÏ·Á´Â ÀÚ¿øÀÇ ¼ºÁú¿¡
µû¶ó ´Ù¸£´Ù.</p>
<p>Áö¿øÇÏ´Â ¸ðµç Çì´õ ¸ñ·ÏÀº <a href="mod/mod_negotiation.html#typemaps">mod_negotation
typemap</a> ¹®¼­¸¦ Âü°íÇ϶ó.</p>
<h3><a name="multiviews" id="multiviews">Multiviews</a></h3>
<p><code>MultiViews</code>´Â µð·ºÅ丮º° ¿É¼ÇÀ̹ǷÎ,
<code>httpd.conf</code>ÀÇ
<code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code>,
<code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code>,
<code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code>
¼½¼Ç ȤÀº (<code class="directive"><a href="./mod/core.html#allowoverride">AllowOverride</a></code>°¡
ÀûÀýÈ÷ ¼³Á¤µÇ¾ú´Ù¸é) <code>.htaccess</code> ÆÄÀÏÀÇ
<code class="directive"><a href="./mod/core.html#options">Options</a></code> Áö½Ã¾î¿¡ ¼³Á¤ÇÒ
¼ö ÀÖ´Ù. <code>Options All</code>Àº <code>MultiViews</code>¸¦
Æ÷ÇÔÇÏÁö¾ÊÀ½À» ÁÖÀÇÇ϶ó. µû·Î Á÷Á¢ ½áÁà¾ß ÇÑ´Ù.</p>
<p><code>MultiViews</code>¸¦ »ç¿ëÇÏ¸é ´ÙÀ½°ú °°Àº ÀÏÀÌ ÀϾ´Ù:
¼­¹ö°¡ <code>/some/dir/foo</code>¿¡ ´ëÇÑ ¿äûÀ» ¹Þ°í
<code>/some/dir/foo</code>¿¡ <code>MultiViews</code>°¡ µ¿ÀÛÇϸç
<code>/some/dir/foo</code>°¡ Á¸ÀçÇÏÁö <em>¾ÊÀ»</em> °æ¿ì,
¼­¹ö´Â µð·ºÅ丮¿¡¼­ À̸§ÀÌ foo.*ÀÎ ÆÄÀϵéÀ» ¸ðµç Æ÷ÇÔÇÏ´Â
°¡»óÀÇ type mapÀ» ¸¸µç´Ù. Ŭ¶óÀ̾ðÆ®°¡ ¿äûÇÑ media type°ú
content-encodingÀ» °¡Áö°í ÀÌÁß¿¡ °¡Àå ÀûÇÕÇÑ °ÍÀ» ¼±ÅÃÇÑ´Ù.</p>
<p><code>MultiViews</code>´Â ¼­¹ö°¡ µð·ºÅ丮¸¦ ÂüÁ¶ÇÒ¶§
ÆÄÀÏÀ» ã´Â <code class="directive"><a href="./mod/mod_dir.html#directoryindex">DirectoryIndex</a></code> Áö½Ã¾î¿¡µµ
Àû¿ëµÈ´Ù. ¼³Á¤ÆÄÀÏÀÌ ´ÙÀ½°ú °°´Ù¸é,</p>
<div class="example"><p><code>DirectoryIndex index</code></p></div>
<p><code>index.html</code>°ú <code>index.html3</code>ÀÌ
¸ðµÎ ÀÖ´Ù¸é ¼­¹ö´Â ÀÌµÑ Áß¿¡ Çϳª¸¦ °áÁ¤ÇÑ´Ù. µÑ ¸ðµÎ ¾ø°í
<code>index.cgi</code>°¡ ÀÖ´Ù¸é, ¼­¹ö´Â ±×°ÍÀ» ½ÇÇàÇÑ´Ù.</p>
<p>µð·ºÅ丮¸¦ ÀÐÀ»¶§ ÆÄÀÏÁß Çϳª°¡ Charset, Content-Type,
Language, Encoding¸¦ ÆÇ´ÜÇÏ´Â <code>mod_mime</code>ÀÌ ¸ð¸£´Â
È®ÀåÀÚ¸¦ °¡Áø´Ù¸é, °á°ú´Â <code class="directive"><a href="./mod/mod_mime.html#multiviewsmatch">MultiViewsMatch</a></code> Áö½Ã¾î ¼³Á¤¿¡
´Þ·Ç´Ù. ÀÌ Áö½Ã¾î´Â Çڵ鷯, ÇÊÅÍ, ´Ù¸¥ È®ÀåÇüµéÀÌ MultiViews
Çù»ó¿¡ Âü¿©ÇÒÁö ¿©ºÎ¸¦ °áÁ¤ÇÑ´Ù.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="methods" id="methods">Çù»ó¹æ¹ý</a></h2>
<p>¾ÆÆÄÄ¡°¡ type-map ÆÄÀÏÀ̳ª µð·ºÅ丮¿¡ ÀÖ´Â ÆÄÀϸíµé·Î
ÁÖ¾îÁø ÀÚ¿ø¿¡ ´ëÇÑ º¯Çü ¸ñ·ÏÀ» ¾ò°ÔµÇ¸é 'ÃÖÀûÀÇ' º¯ÇüÀ»
°áÁ¤ÇϱâÀ§ÇØ µÎ ¹æ¹ýÁß Çϳª¸¦ »ç¿ëÇÑ´Ù. ¾ÆÆÄÄ¡ ³»¿ëÇù»ó
±â´ÉÀ» »ç¿ëÇϱâÀ§ÇØ Á¤È®È÷ Çù»óÀÌ ¾î¶»°Ô ÀϾ´ÂÁö ÀÚ¼¼È÷
¾Ë ÇÊ¿ä´Â ¾ø´Ù. ±×·¯³ª ±Ã±ÝÇÑ »ç¶÷À» À§ÇØ ÀÌ ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.</p>
<p>µÎ°¡Áö Çù»ó¹æ¹ýÀÌ ÀÖ´Ù:</p>
<ol>
<li><strong>¾ÆÆÄÄ¡ ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ¿© ¼­¹ö°¡ ÁÖµµÇÏ´Â
Çù»ó</strong>Àº ÀϹÝÀûÀÎ °æ¿ì¿¡ »ç¿ëÇÑ´Ù. ¾ÆÆÄÄ¡ ¾Ë°í¸®ÁòÀº
¾Æ·¡¼­ ÀÚ¼¼È÷ ¼³¸íÇÑ´Ù. ÀÌ ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ¸é ¾ÆÆÄÄ¡´Â
´õ ³ªÀº °á°ú¸¦ ¾ò±âÀ§ÇØ Á¾Á¾ ƯÁ¤ ¹üÀ§ÀÇ
Ç°Áú°è¼ö(quality factor)¸¦ 'Á¶ÀÛÇÑ´Ù'. ¾ÆÆÄÄ¡°¡ Ç°Áú°è¼ö¸¦
Á¶ÀÛÇÏ´Â ¹æ¹ýÀº ¾Æ·¡¼­ ÀÚ¼¼È÷ ¼³¸íÇÑ´Ù.</li>
<li><strong>ÀÚ¿¬½º·¯¿î(Transparent) ³»¿ëÇù»ó</strong>Àº
ºê¶ó¿ìÀú°¡ RFC 2295¿¡ Á¤ÀÇµÈ ¹æ¹ýÀ¸·Î ¿äûÇÒ °æ¿ì¿¡¸¸
»ç¿ëÇÑ´Ù. ÀÌ Çù»ó¹æ¹ýÀº 'ÃÖÀûÀÇ' º¯ÇüÀ» °áÁ¤ÇÒ ±ÇÇÑÀ»
ºê¶ó¿ìÀú¿¡°Ô ºÎ¿©ÇÑ´Ù. ±×·¡¼­ °á°ú´Â ºê¶ó¿ìÀúÀÇ ¾Ë°í¸®Áò¿¡
´Þ·È´Ù. ÀÚ¿¬½º·¯¿î Çù»ó°úÁ¤Áß¿¡ ºê¶ó¿ìÀú´Â ¾ÆÆÄÄ¡¿¡°Ô
RFC 2296¿¡ Á¤ÀÇµÈ '¿ø°Ý º¯Çü¼±Åà ¾Ë°í¸®Áò(remote variant
selection algorithm)'À» ¿äûÇÒ ¼ö ÀÖ´Ù.</li>
</ol>
<h3><a name="dimensions" id="dimensions">Çù»óÀÇ ¹üÀ§</a></h3>
<table>
<tr valign="top">
<th>¹üÀ§</th>
<th>¼³¸í</th>
</tr>
<tr valign="top">
<td>Media Type</td>
<td>ºê¶ó¿ìÀú´Â <code>Accept</code> Çì´õ·Î ¼±È£¸¦ ³ªÅ¸³½´Ù.
°¢ Ç׸ñÀº Ç°Áú°è¼ö¸¦ °¡Áú ¼ö ÀÖ´Ù. º¯ÇüÀÇ ¼³¸íµµ Ç°Áú°è¼ö¸¦
("qs" ÆĶó¹ÌÅÍ) °¡Áú ¼ö ÀÖ´Ù.</td>
</tr>
<tr valign="top">
<td>Language</td>
<td>ºê¶ó¿ìÀú´Â <code>Accept-Language</code> Çì´õ·Î ¼±È£¸¦
³ªÅ¸³½´Ù. °¢ Ç׸ñÀº Ç°Áú°è¼ö¸¦ °¡Áú ¼ö ÀÖ´Ù. º¯ÇüÀº
¿©·¯ ¾ð¾î¸¦ °¡Áú (ȤÀº ¾Æ¹« ¾ð¾îµµ ¾øÀ») ¼ö ÀÖ´Ù.</td>
</tr>
<tr valign="top">
<td>Encoding</td>
<td>ºê¶ó¿ìÀú´Â <code>Accept-Encoding</code> Çì´õ·Î ¼±È£¸¦
³ªÅ¸³½´Ù. °¢ Ç׸ñÀº Ç°Áú°è¼ö¸¦ °¡Áú ¼ö ÀÖ´Ù.</td>
</tr>
<tr valign="top">
<td>Charset</td>
<td>ºê¶ó¿ìÀú´Â <code>Accept-Charset</code> Çì´õ·Î ¼±È£¸¦
³ªÅ¸³½´Ù. °¢ Ç׸ñÀº Ç°Áú°è¼ö¸¦ °¡Áú ¼ö ÀÖ´Ù. º¯ÇüÀº
media typeÀÇ ÆĶó¹ÌÅÍ·Î ¹®ÀÚÁýÇÕÀ» ³ªÅ¸³¾ ¼ö ÀÖ´Ù.</td>
</tr>
</table>
<h3><a name="algorithm" id="algorithm">¾ÆÆÄÄ¡ Çù»ó ¾Ë°í¸®Áò</a></h3>
<p>¾ÆÆÄÄ¡´Â ºê¶ó¿ìÀú¿¡°Ô º¸³¾ 'ÃÖÀûÀÇ' º¯ÇüÀ» (ÀÖ´Ù¸é)
¼±ÅÃÇϱâÀ§ÇØ ¾Æ·¡ ¾Ë°í¸®ÁòÀ» »ç¿ëÇÑ´Ù. ÀÌ ¾Ë°í¸®ÁòÀº º¯°æÇÒ
¼ö ¾ø´Ù. ´ÙÀ½¿Í °°ÀÌ µ¿ÀÛÇÑ´Ù:</p>
<ol>
<li>¸ÕÀú, Çù»óÀÇ °¢ ¹üÀ§¿¡ ´ëÇØ ÇØ´çÇÏ´Â <em>Accept*</em>
Çì´õ¸¦ °Ë»çÇÏ°í, °¢ º¯Çü¿¡ Ç°Áú°ªÀ» ¸Å±ä´Ù. ¾î¶² ¹üÀ§ÀÇ
<em>Accept*</em> Çì´õ°¡ ¹Þ¾ÆµéÀÌÁö ¾Ê´Â º¯ÇüÀº Èĺ¸¿¡¼­
Á¦¿ÜÇÑ´Ù. ¾î¶² º¯Çüµµ ³²Áö¾ÊÀ¸¸é 4 ´Ü°è·Î °£´Ù.</li>
<li>
Èĺ¸¿¡¼­ Çϳª¾¿ Á¦¿ÜÇÏ¿© 'ÃÖÀûÀÇ' º¯ÇüÀ» ã´Â´Ù. ´ÙÀ½
°¢ °Ë»ç´Â ¼ø¼­´ë·Î ÀϾ´Ù. °¢ °Ë»ç¿¡¼­ ¼±ÅõÇÁö¾ÊÀº
º¯ÇüÀº Á¦¿ÜµÈ´Ù. °¢ °Ë»çÈÄ ÇÑ º¯Çü¸¸ ³²À¸¸é À̸¦ ÃÖÀûÀÇ
º¯ÇüÀ¸·Î ¼±ÅÃÇÏ°í 3 ´Ü°è·Î °£´Ù. ¿©·¯ º¯ÇüÀÌ ³²À¸¸é
´ÙÀ½ °Ë»ç¸¦ ÁøÇàÇÑ´Ù.
<ol>
<li><code>Accept</code> Çì´õÀÇ Ç°Áú°è¼ö¿Í º¯ÇüÀÇ
media type¿¡ ´ëÇÑ Ç°Áú°ªÀ» °öÇÏ¿© °¡Àå ³ôÀº °ªÀ»
°¡Áø º¯ÇüÀ» ¼±ÅÃÇÑ´Ù.</li>
<li>°¡Àå ³ôÀº ¾ð¾î(language) Ç°Áú°è¼ö¸¦ °¡Áø º¯ÇüÀ»
¼±ÅÃÇÑ´Ù.</li>
<li><code>Accept-Language</code> Çì´õ¿¡ (ÀÖ´Ù¸é)
³ª¿Â ¾ð¾îÀÇ ¼ø¼­ ȤÀº <code>LanguagePriority</code>
Áö½Ã¾î¿¡ (ÀÖ´Ù¸é) ³ª¿Â ¾ð¾îÀÇ ¼ø¼­¸¦ °¡Áö°í °¡Àå
ÀûÇÕÇÑ ¾ð¾î¸¦ °¡Áø º¯ÇüÀ» ¼±ÅÃÇÑ´Ù.</li>
<li>°¡Àå ³ôÀº (text/html media typeÀÇ ¹öÀüÀ» ³ªÅ¸³»´Â)
'level' media ÆĶó¹ÌÅ͸¦ °¡Áø º¯ÇüÀ» ¼±ÅÃÇÑ´Ù.</li>
<li><code>Accept-Charset</code> Çì´õ¸¦ °¡Áö°í °¡Àå
ÀûÇÕÇÑ charset media ÆĶó¹ÌÅ͸¦ °¡Áø º¯ÇüÀ» ã´Â´Ù.
Çì´õ°¡ ¾ø´Ù¸é ISO-8859-1 ¹®ÀÚÁýÇÕÀ» °¡Àå ¼±È£ÇÑ´Ù.
<code>text/*</code> media typeÀ» °¡ÁöÁö¸¸ ¸í½ÃÀûÀ¸·Î
ƯÁ¤ ¹®ÀÚÁýÇÕ°ú ¿¬°áµÇÁö¾ÊÀº º¯ÇüÀº ISO-8859-1·Î
°¡Á¤ÇÑ´Ù.</li>
<li>ISO-8859-1ÀÌ <em>¾Æ´Ñ</em> charset media ÆĶó¹ÌÅ͸¦
°¡Áø º¯ÇüµéÀ» ¼±ÅÃÇÑ´Ù. ±×·± º¯ÇüÀÌ ¾ø´Ù¸é, ´ë½Å ¸ðµç
º¯ÇüÀ» ¼±ÅÃÇÑ´Ù.</li>
<li>°¡Àå ÀûÇÕÇÑ ÀÎÄÚµùÀ» °¡Áø º¯ÇüÀ» ¼±ÅÃÇÑ´Ù.
user-agent¿¡ ÀûÇÕÇÑ ÀÎÄÚµùÀ» °¡Áø º¯ÇüÀÌ ÀÖ´Ù¸é ±×
º¯Çü¸¸À» ¼±ÅÃÇÑ´Ù. ±×·¸Áö¾Ê°í ÀÎÄÚµùµÈ º¯Çü°ú ÀÎÄÚµù¾ÈµÈ
º¯ÇüÀÌ °°ÀÌ ÀÖ´Ù¸é ÀÎÄÚµù¾ÈµÊ º¯Çü¸¸À» ¼±ÅÃÇÑ´Ù. º¯ÇüÀÌ
¸ðµÎ ÀÎÄÚµùµÇ¾ú°Å³ª ¸ðµÎ ÀÎÄÚµù¾ÈµÈ °æ¿ì ¸ðµç º¯ÇüÀ»
¼±ÅÃÇÑ´Ù.</li>
<li>content length°¡ °¡Àå ÀûÀº º¯ÇüÀ» ¼±ÅÃÇÑ´Ù.</li>
<li>³²Àº °ÍÁß Ã¹¹øÀç º¯ÇüÀ» ¼±ÅÃÇÑ´Ù. ÀÌ´Â type-map
ÆÄÀÏÀÇ ¾Õ¿¡ ³ª¿Ô°Å³ª, µð·ºÅ丮¿¡¼­ º¯ÇüÀ» ÀÐÀº °æ¿ì
ÆÄÀϸíÀ» ASCII ÄÚµå ¼ø¼­·Î ÇÏ¿© ¾Õ¿¡ ³ª¿À´Â °ÍÀÌ´Ù.</li>
</ol>
</li>
<li>ÀÌÁ¦ ¾Ë°í¸®ÁòÀÌ 'ÃÖÀûÀÇ' º¯ÇüÀ» ¼±ÅÃÇß´Ù. ÀÌ°ÍÀ» ÀÀ´äÀ¸·Î
º¸³½´Ù. HTTP ÀÀ´ä Çì´õ <code>Vary</code>´Â Çù»óÀÇ ¹üÀ§¸¦
³ªÅ¸³»°Ô µÈ´Ù. (ºê¶ó¿ìÀú¿Í ij½¬´Â ÀÚ¿øÀ» ij½¬ÇÒ¶§ ÀÌ Á¤º¸¸¦
»ç¿ëÇÒ ¼ö ÀÖ´Ù.) ³¡.</li>
<li>ÀÌ ´Ü°è¿¡ µµ´ÞÇß´Ù¸é (¸ðµÎ ºê¶ó¿ìÀú°¡ ¹ÞÁö¸øÇϱ⠶§¹®¿¡)
¾î¶² º¯Çüµµ ¼±ÅÃÀÌ ¾ÈµÈ °æ¿ì´Ù. ("No acceptable
representation"¸¦ ¶æÇÏ´Â) »óÅ 406°ú ³»¿ëÀ¸·Î »ç¿ë°¡´ÉÇÑ
º¯ÇüÀÇ ¸ñ·ÏÀ» ´ãÀº HTML ¹®¼­¸¦ ÀÀ´äÀ» º¸³½´Ù. ¶Ç, HTML
<code>Vary</code> Çì´õ´Â º¯ÇüÀÇ ¹üÀ§¸¦ ³ªÅ¸³½´Ù.</li>
</ol>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="better" id="better">Ç°Áú°è¼ö Á¶ÀÛÇϱâ</a></h2>
<p>¾ÆÆÄÄ¡´Â Á¾Á¾ À§ÀÇ ¾ÆÆÄÄ¡ Çù»ó ¾Ë°í¸®ÁòÀ» ¾ö°ÝÈ÷ ÁöÅ°Áö¾Ê°í
Ç°Áú°è¼ö¸¦ º¯°æÇÑ´Ù. ÀÌÀ¯´Â ¿ÏÀüÇÏ°í Á¤È®ÇÑ Á¤º¸¸¦ º¸³»Áö¾Ê´Â
ºê¶ó¿ìÀú¿¡°Ô (¾Ë°í¸®ÁòÀÇ) ´õ ³ªÀº °á°ú¸¦ º¸³»±â À§Çؼ­´Ù.
³Î¸® ¾²ÀÌ´Â ºê¶ó¿ìÀúÁß ÀϺδ ÀÚÁÖ À߸øµÈ º¯ÇüÀ» ¼±ÅÃÇϵµ·Ï
<code>Accept</code> Çì´õ¸¦ º¸³½´Ù. ºê¶ó¿ìÀú°¡ ¿ÏÀüÇÏ°í ¿Ã¹Ù¸¥
Á¤º¸¸¦ º¸³½´Ù¸é, Á¶ÀÛÀ» ÇÏÁö¾Ê´Â´Ù.</p>
<h3><a name="wildcards" id="wildcards">Media Type°ú ¿ÍÀϵåÄ«µå</a></h3>
<p><code>Accept:</code> ¿äû Çì´õ´Â media type¿¡ ´ëÇÑ ¼±È£¸¦
³ªÅ¸³½´Ù. ¶Ç, *´Â ¾î¶² ¹®ÀÚ¿­ÀÌ¶óµµ °¡´ÉÇϱ⶧¹®¿¡ "image/*"³ª
"*/*" °°ÀÌ '¿ÍÀϵåÄ«µå' media typeÀ» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ±×·¡¼­
´ÙÀ½°ú °°Àº ¿äûÀº:</p>
<div class="example"><p><code>Accept: image/*, */*</code></p></div>
<p>"image/"·Î ½ÃÀÛÇÏ´Â ¾î¶² type°ú ´Ù¸¥ ¾î¶² typeµµ °¡´ÉÇÔÀ»
ÀǹÌÇÑ´Ù. ¾î¶² ºê¶ó¿ìÀú´Â
ÀÚ½ÅÀÌ ½ÇÁ¦·Î ´Ù·ê ¼ö ÀÖ´Â type¿¡ Ãß°¡·Î ¿ÍÀϵåÄ«µå¸¦ º¸³½´Ù.
¿¹¸¦ µé¸é:</p>
<div class="example"><p><code>
Accept: text/html, text/plain, image/gif, image/jpeg, */*
</code></p></div>
<p>ÀÌÀ¯´Â Á÷Á¢ ¿­°ÅÇÑ typeÀ» ¼±È£ÇÏÁö¸¸ ´Ù¸¥ Ç¥ÇöÀÌ ÀÖ´Ù¸é
±×°Íµµ ±¦ÂúÀ½À» ³ªÅ¸³»±â À§Çؼ­´Ù. ºê¶ó¿ìÀú°¡ ½ÇÁ¦·Î ¿øÇÑ
°ÍÀº ´ÙÀ½°ú °°ÀÌ ¸í½ÃÀûÀ¸·Î Ç°Áú°ªÀ» »ç¿ëÇÑ °ÍÀÌ´Ù.</p>
<div class="example"><p><code>
Accept: text/html, text/plain, image/gif, image/jpeg, */*; q=0.01
</code></p></div>
<p>Á÷Á¢ ¿­°ÅÇÑ typeÀº Ç°Áú°è¼ö°¡ ¾ø¾î¼­ ±âº»°ªÀÎ (°¡Àå ³ôÀº)
1.0À» °¡Áø´Ù. ¿ÍÀϵåÄ«µå */*´Â ³·Àº ¼±È£µµ 0.01À» °¡Áö¹Ç·Î
Á÷Á¢ ¿­°ÅÇÑ type¿¡ ¸Â´Â º¯ÇüÀÌ ¾ø´Â °æ¿ì¿¡¸¸ ´Ù¸¥ typeµéÀÌ
»ç¿ëµÈ´Ù.</p>
<p><code>Accept:</code> Çì´õ¿¡ q °è¼ö°¡ ÀüÇô <em>¾ø°í</em>
"*/*"°¡ ÀÖ´Ù¸é, ¾ÆÆÄÄ¡´Â ¹Ù¶÷Á÷ÇÑ ÇൿÀ» À§ÇØ q °ªÀ¸·Î 0.01À»
ÁöÁ¤ÇÑ´Ù. ¶Ç, "type/*" ÇüÅÂÀÇ ¿ÍÀϵåÄ«µå¿¡´Â ("*/*"º¸´Ù´Â
´õ ¼±È£Çϵµ·Ï) 0.02¸¦ ÁöÁ¤ÇÑ´Ù. <code>Accept:</code> Çì´õ¿¡¼­
q °è¼ö¸¦ °¡Áö´Â media typeÀÌ ÀÖ´Ù¸é ÀÌ·± Ưº°ÇÑ °ªÀ» Ãß°¡ÇÏÁö
<em>¾Ê´Â´Ù</em>. ±×·¡¼­ ¸í½ÃÀûÀÎ Á¤º¸¸¦ º¸³»´Â ºê¶ó¿ìÀúÀÇ
¿äûÀº ¿äûÇѵ¥·Î ó¸®ÇÑ´Ù.</p>
<h3><a name="exceptions" id="exceptions">¾ð¾î(language) Çù»óÀÇ ¿¹¿Ü</a></h3>
<p>¾ÆÆÄÄ¡ 2.0Àº ¾ð¾î Çù»óÀÌ ½ÇÆÐÇÑ °æ¿ì ºÎµå·´°Ô º¹±¸ÇϱâÀ§ÇØ
Çù»ó ¾Ë°í¸®Áò¿¡ »õ·Î ¿¹¿Ü¸¦ ¸î°³ Ãß°¡Çß´Ù.</p>
<p>Ŭ¶óÀ̾ðÆ®°¡ ¼­¹ö¿¡ ÆäÀÌÁö¸¦ ¿äûÇßÀ»¶§ ¼­¹ö°¡ ºê¶ó¿ìÀú°¡
º¸³½ <code>Accept-language</code>¿¡ ¸Â´Â ÆäÀÌÁö¸¦ ´Ü ÇÑ°³¸¸
ãÀ¸¸é ¹®Á¦°¡ ¾øÁö¸¸, ±×·¯Áö ¾ÊÀº °æ¿ì ¼­¹ö´Â Ŭ¶óÀ̾ðÆ®¿¡°Ô
"No Acceptable Variant"³ª "Multiple Choices" ÀÀ´äÀ» º¸³½´Ù.
ÀÌ·± ¿À·ù¹®À» ÇÇÇϱâÀ§ÇØ ÀÌ °æ¿ì <code>Accept-language</code>¸¦
¹«½ÃÇÏ°í Ŭ¶óÀ̾ðÆ®ÀÇ ¿äû¿¡ ¸íÈ®È÷ ¸ÂÁö´Â ¾ÊÁö¸¸ ¹®¼­¸¦
º¸³»µµ·Ï ¾ÆÆÄÄ¡¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. <code class="directive"><a href="./mod/mod_negotiation.html#forcelanguagepriority">ForceLanguagePriority</a></code>
Áö½Ã¾î´Â ¼­¹ö°¡ ÀÌ·± ¿À·ù¹®Áß Çϳª ȤÀº µÑ´Ù¸¦ ¹«½ÃÇÏ°í
<code class="directive"><a href="./mod/mod_negotiation.html#languagepriority">LanguagePriority</a></code>
Áö½Ã¾î·Î ÆÇ´ÜÇϵµ·Ï ÇÑ´Ù.</p>
<p>¶Ç, ¼­¹ö´Â ¸Â´Â ¾ð¾î¸¦ ¸øãÀº °æ¿ì ºÎ¸ð¾ð¾î¸¦ ãÀ» ¼öµµ
ÀÖ´Ù. ¿¹¸¦ µé¾î Ŭ¶óÀ̾ðÆ®°¡ ¿µ±¹¿µ¾î¸¦ ¶æÇÏ´Â
<code>en-GB</code> ¾ð¾î·Î ¹®¼­¸¦ ¿äûÇÑ °æ¿ì, HTTP/1.1 Ç¥ÁØ¿¡
µû¸£¸é ¼­¹ö´Â <code>en</code>À¸·Î¸¸ Ç¥½ÃµÈ ¹®¼­¸¦ ÀϹÝÀûÀ¸·Î
¼±ÅÃÇÏÁö ¸øÇÑ´Ù. (±×·¡¼­ ¿µ±¹¿µ¾î¸¦ ÀÌÇØÇÏ´Â µ¶ÀÚ°¡ ÀϹÝÀûÀÎ
¿µ¾îµµ ÀÌÇØÇÒ ¼ö ÀÖÀ¸¹Ç·Î <code>Accept-Language</code> Çì´õ¿¡
<code>en-GB</code>¸¸ Æ÷ÇÔÇÏ°í <code>en</code>À» Æ÷ÇÔÇÏÁö¾ÊÀ¸¸é
°ÅÀÇ È®½ÇÈ÷ À߸øµÈ ¼³Á¤ÀÓÀ» À¯ÀÇÇ϶ó. ºÒÇàÈ÷µµ ÇöÀç ¸¹Àº
Ŭ¶óÀ̾ðÆ®µéÀº ÀÌ·± ½ÄÀ¸·Î ±âº»¼³Á¤µÇÀÖ´Ù.) ´Ù¸¥ ¾ð¾î¸¦
ãÁö ¸øÇÏ¿© ¼­¹ö°¡ "No Acceptable Variants" ¿À·ù¸¦ º¸³»°Å³ª
<code class="directive"><a href="./mod/mod_negotiation.html#languagepriority">LanguagePriority</a></code>·Î
µ¹¾Æ°¡¾ß ÇÑ´Ù¸é, ¼­¹ö´Â ÇÏÀ§¾ð¾î ±Ô¾àÀ» ¹«½ÃÇÏ°í
<code>en-GB</code>¸¦ <code>en</code> ¹®¼­¿¡ ´ëÀÀÇÑ´Ù.
¾Ï¹¬ÀûÀ¸·Î ¾ÆÆÄÄ¡´Â ºÎ¸ð¾ð¾î¸¦ ¸Å¿ì ³·Àº Ç°Áú°ªÀ¸·Î
Ŭ¶óÀ̾ðÆ®ÀÇ Çã¿ë¾ð¾î ¸ñ·Ï¿¡ Ãß°¡ÇÑ´Ù. ±×·¯³ª Ŭ¶óÀ̾ðÆ®°¡
"en-GB; q=0.9, fr; q=0.8"À» ¿äûÇÏ°í ¼­¹ö¿¡ "en"°ú "fr"
¹®¼­°¡ ÀÖ´Ù¸é, "fr" ¹®¼­°¡ ¼±ÅõÊÀ» ÁÖÀÇÇ϶ó. ÀÌ´Â HTTP/1.1
Ç¥ÁØÀ» ÁöÅ°°í, ¿Ã¹Ù·Î ¼³Á¤µÈ Ŭ¶óÀ̾ðÆ®¿Í È¿À²ÀûÀ¸·Î
µ¿ÀÛÇϱâÀ§ÇÔÀÌ´Ù.</p>
<p>»ç¿ëÀÚ°¡ ¼±È£ÇÏ´Â ¾ð¾î¸¦ ¾Ë¾Æ³»±âÀ§ÇÑ (ÄíÅ°³ª Ưº°ÇÑ
URL-°æ·Î °°Àº) °í±Þ ±â¹ýÀ» Áö¿øÇϱâÀ§ÇØ ¾ÆÆÄÄ¡ 2.0.47ºÎÅÍ
<code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code>Àº <code>prefer-language</code>¶ó´Â
<a href="env.html">ȯ°æº¯¼ö</a>¸¦ ÀνÄÇÑ´Ù. ÀÌ È¯°æº¯¼ö°¡
Á¸ÀçÇÏ°í ÀûÀýÇÑ ¾ð¾îű׸¦ Æ÷ÇÔÇÑ´Ù¸é,
<code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code>Àº ÇØ´çÇÏ´Â º¯ÇüÀ» ¼±ÅÃÇÏ·Á°í
½ÃµµÇÑ´Ù. ±×·± º¯ÇüÀÌ ¾ø´Ù¸é ÀϹÝÀûÀÎ Çù»ó°úÁ¤À» ½ÃÀÛÇÑ´Ù.</p>
<div class="example"><h3>¿¹Á¦</h3><p><code>
SetEnvIf Cookie "language=(.+)" prefer-language=$1
</code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="extensions" id="extensions">ÀÚ¿¬½º·¯¿î(transparent) ³»¿ëÇù»óÀÇ È®Àå</a></h2>
<p>¾ÆÆÄÄ¡´Â ´ÙÀ½°ú °°ÀÌ ÀÚ¿¬½º·¯¿î ³»¿ëÈ®Àå ÇÁ·ÎÅäÄÝÀ» (RFC 2295)
È®ÀåÇÑ´Ù. º¯Çü ¸ñ·ÏÀÇ »õ·Î¿î <code>{encoding ..}</code>´Â ƯÁ¤
content-encodingÀ» °¡Áø º¯Çü¸¸À» ÁöĪÇÑ´Ù. RVSA/1.0 ¾Ë°í¸®ÁòÀº
(RFC 2296) ¸ñ·Ï¿¡¼­ ÀÎÄÚµùµÈ º¯ÇüÀ» ÀνÄÇÒ ¼ö ÀÖ°í, ÀÎÄÚµùÀÌ
<code>Accept-Encoding</code> ¿äû Çì´õ¿¡ ¸Â´Â °æ¿ì ÀÎÄÚµùµÈ
º¯Çüµéµµ È帷Π»ç¿ëÇϵµ·Ï È®ÀåµÇ¾ú´Ù. RVSA/1.0 ±¸ÇöÀº ÃÖÀûÀÇ
º¯ÇüÀ» ã±â Àü¿¡ °è»êµÈ Ç°Áú°è¼ö¸¦ ¼Ò¼öÁ¡ 5ÀÚ¸®¿¡¼­ ¹Ý¿Ã¸²ÇÏÁö
¾Ê´Â´Ù.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="naming" id="naming">ÇÏÀÌÆÛ¸µÅ©¿Í À̸§±ÔÄ¢¿¡ ´ëÇÏ¿©</a></h2>
<p>¾ð¾î(language) Çù»óÀ» »ç¿ëÇÑ´Ù¸é ÆÄÀÏÀº ¿©·¯ È®ÀåÀÚ¸¦
°¡Áö°í È®ÀåÀÚÀÇ ¼ø¼­´Â º¸Åë °ü°è¾øÀ¸¹Ç·Î ÆÄÀÏ¸í¿¡ ¿©·¯ ´Ù¸¥
À̸§±ÔÄ¢À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. (ÀÚ¼¼ÇÑ ³»¿ëÀº <a href="mod/mod_mime.html#multipleext">mod_mime</a> ¹®¼­¸¦
Âü°íÇ϶ó.)</p>
<p>ÀüÇüÀûÀÎ ÆÄÀÏÀº MIME-type È®ÀåÀÚ (<em>¿¹¸¦ µé¾î</em>,
<code>html</code>), °æ¿ì¿¡ µû¶ó encoding È®ÀåÀÚ (<em>¿¹¸¦
µé¾î</em>, <code>gz</code>), ÆÄÀÏ¿¡ ¿©·¯ ¾ð¾î º¯ÇüÀÌ ÀÖ´Â
°æ¿ì ¹°·Ð ¾ð¾î È®ÀåÀÚ¸¦ (<em>¿¹¸¦ µé¾î</em>, <code>en</code>)
°¡Áø´Ù.</p>
<p>¿¹Á¦:</p>
<ul>
<li>foo.en.html</li>
<li>foo.html.en</li>
<li>foo.en.html.gz</li>
</ul>
<p>´ÙÀ½Àº ¸î¸î ÆÄÀϸí°ú ±× ÆÄÀÏ¿¡ ´ëÇÑ À¯È¿ÇÏ°í À¯È¿ÇÏÁö¾ÊÀº
ÇÏÀÌÆÛ¸µÅ©¸¦ º¸ÀδÙ:</p>
<table class="bordered">
<tr>
<th>ÆÄÀϸí</th>
<th>À¯È¿ÇÑ ÇÏÀÌÆÛ¸µÅ©</th>
<th>À¯È¿ÇÏÁö¾ÊÀº ÇÏÀÌÆÛ¸µÅ©</th>
</tr>
<tr>
<td><em>foo.html.en</em></td>
<td>foo<br />
foo.html</td>
<td>-</td>
</tr>
<tr>
<td><em>foo.en.html</em></td>
<td>foo</td>
<td>foo.html</td>
</tr>
<tr>
<td><em>foo.html.en.gz</em></td>
<td>foo<br />
foo.html</td>
<td>foo.gz<br />
foo.html.gz</td>
</tr>
<tr>
<td><em>foo.en.html.gz</em></td>
<td>foo</td>
<td>foo.html<br />
foo.html.gz<br />
foo.gz</td>
</tr>
<tr>
<td><em>foo.gz.html.en</em></td>
<td>foo<br />
foo.gz<br />
foo.gz.html</td>
<td>foo.html</td>
</tr>
<tr>
<td><em>foo.html.gz.en</em></td>
<td>foo<br />
foo.html<br />
foo.html.gz</td>
<td>foo.gz</td>
</tr>
</table>
<p>À§ Ç¥¸¦ º¸¸é ÇÏÀÌÆÛ¸µÅ©¿¡ ¾î¶² È®ÀåÀÚµµ ¾ø´Â À̸§À»
(<em>¿¹¸¦ µé¾î</em>, <code>foo</code>) Ç×»ó »ç¿ëÇÒ ¼ö ÀÖÀ½À»
¾Ë ¼ö ÀÖ´Ù. ÀÌ °æ¿ì ÀåÁ¡Àº ¹®¼­ÀÇ ½ÇÁ¦ Á¾·ù¸¦ ¼û±æ ¼ö À־,
<em>¿¹¸¦ µé¾î</em> ÇÏÀÌ·¯¸µÅ© ÂüÁ¶¸¦ ¼öÁ¤ÇϾʰí
<code>html</code> ÆÄÀÏÀ» <code>shtml</code>À̳ª
<code>cgi</code>·Î º¯°æÇÒ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù.</p>
<p>°è¼Ó ÇÏÀÌÆÛ¸µÅ©¿¡ MIME-typeÀ» (<em>¿¹¸¦ µé¾î</em>,
<code>foo.html</code>) »ç¿ëÇÏ°í ½Í´Ù¸é (encoding È®ÀåÀÚ°¡
ÀÖ´Ù¸é À̰͵µ Æ÷ÇÔÇÏ¿©) ¾ð¾î È®ÀåÀÚ¸¦ MIME-type È®ÀåÀÚº¸´Ù
¿À¸¥ÂÊ¿¡ (<em>¿¹¸¦ µé¾î</em>, <code>foo.html.en</code>)
µÎ¾î¾ßÇÑ´Ù.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="caching" id="caching">ij½¬¿¡ ´ëÇÏ¿©</a></h2>
<p>ij½¬°¡ Ç¥ÇöÀ» ÀúÀåÇϸé Ç¥Çö°ú ¿äû URLÀ» ¿¬°ü½ÃŲ´Ù.
´ÙÀ½¹ø ±× URLÀ» ¿äûÇϸé ij½¬´Â ÀúÀåµÈ Ç¥ÇöÀ» »ç¿ëÇÑ´Ù.
±×·¯³ª ¼­¹ö¿Í Çù»óÀÌ °¡´ÉÇÑ ÀÚ¿øÀÎ °æ¿ì ù¹ø° ¿äûÇÑ º¯Çü¸¸
ij½¬µÇ¾î ÀÌÈÄ ¿äûÀº ij½¬µÈ À߸øµÈ ÀÀ´äÀ» ¾òÀ» ¼ö ÀÖ´Ù.
À̸¦ ¸·±âÀ§ÇØ ¾ÆÆÄÄ¡´Â º¸Åë ³»¿ëÇù»óÈÄ ¹ÝȯµÇ´Â ¸ðµç ¿äû¿¡
HTTP/1.0 Ŭ¶óÀ̾ðÆ®°¡ ij½¬¸¦ ¸øÇϵµ·Ï Ç¥½Ã¸¦ ÇÑ´Ù. ¶Ç, ¾ÆÆÄÄ¡´Â
Çù»óÇÑ ÀÀ´äÀÇ Ä³½¬¸¦ Çã¿ëÇÏ´Â HTTP/1.1 ÇÁ·ÎÅäÄÝÀÇ ±â´ÉÀ»
Áö¿øÇÑ´Ù.</p>
<p><code class="directive"><a href="./mod/mod_negotiation.html#cachenegotiateddocs">CacheNegotiatedDocs</a></code>
Áö½Ã¾î´Â HTTP/1.0 ȣȯ Ŭ¶óÀ̾ðÆ®(ºê¶ó¿ìÀú ȤÀº ij½¬)°¡
º¸³½ ¿äû¿¡ ´ëÇØ Çù»óÇÑ ÀÀ´äÀ» ij½¬ÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ÀÌ Áö½Ã¾î´Â
¼­¹ö³ª °¡»óÈ£½ºÆ® ¼³Á¤¿¡ »ç¿ëÇϸç, ¾Æ±Ô¸ÕÆ®¸¦ ¹ÞÁö¾Ê´Â´Ù.
ÀÌ Áö½Ã¾î´Â HTTP/1.1 Ŭ¶óÀ̾ðÆ®ÀÇ ¿äû°ú´Â °ü°è°¡ ¾ø´Ù.</p>
<p>HTTP/1.1 Ŭ¶óÀ̾ðÆ®¿¡°Ô ¾ÆÆÄÄ¡´Â ÀÀ´äÀÇ Çù»ó ¹üÀ§¸¦
¾Ë·ÁÁÖ´Â <code>Vary</code> HTTP ÀÀ´äÇì´õ¸¦ º¸³½´Ù. ÀÌ Á¤º¸¸¦
»ç¿ëÇÏ¿© ´ÙÀ½ ¿äûÀ» ij½¬µÈ º¹»çº»À¸·Î ´ëüÇÒ ¼ö ÀÖ´ÂÁö
ÆÇ´ÜÇÒ ¼ö ÀÖ´Ù. Çé»óÀÇ ¹üÀ§¿Í °ü°è¾øÀÌ Ä³½¬µÈ º¹»çº»À»
±ÇÇÑ´Ù¸é <code>force-no-vary</code> <a href="env.html#special">ȯ°æº¯¼ö</a>¸¦ ¼³Á¤ÇÑ´Ù.</p>
</div></div>
<div class="bottomlang">
<p><span>°¡´ÉÇÑ ¾ð¾î: </span><a href="./en/content-negotiation.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./fr/content-negotiation.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a> |
<a href="./ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/content-negotiation.html" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/content-negotiation.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</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">Comments</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>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/trunk/content-negotiation.html';
(function(w, d) {
if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
d.write('<div id="comments_thread"><\/div>');
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
(d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
}
else {
d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
}
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2016 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="./mod/">¸ðµâ</a> | <a href="./mod/quickreference.html">Áö½Ã¾îµé</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">¿ë¾î</a> | <a href="./sitemap.html">»çÀÌÆ®¸Ê</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
//--><!]]></script>
</body></html>