「Apache - アクセス制御」の版間の差分

ナビゲーションに移動 検索に移動
124行目: 124行目:
  # これは、ステータスparmanent (ステータスコード 301 : Moved Parmanetly) を返す
  # これは、ステータスparmanent (ステータスコード 301 : Moved Parmanetly) を返す
  Redirect parmanent /redirect_sample/ http://example.com/redirect/  
  Redirect parmanent /redirect_sample/ http://example.com/redirect/  
</syntaxhighlight>
<br><br>
== コンテントネゴシエーション ==
HTTPリクエストヘッダは、言語、文字タイプ、データタイプ等の環境情報について通知している。<br>
複数の形式で優先度が付いており、サーバ側は最適なものを選択することができる。<br>
<br>
このように、処理できるデータ形式をクライアントとサーバ間で自動的に問い合わせることを、<u>コンテントネゴシエーション</u>と呼ぶ。<br>
<br>
# Accept          : クライアントが処理できるデータタイプと優先度
# Accept-Language : クライアントが処理できる言語と優先度
# Accept-Charset  : クライアントが処理できる文字コードと優先度
# Accept-Encoding : クライアントが処理できるデータ転送方式と優先度
# q              : 品質値
GET / HTTP / 1.1
Accept-Language : ja, en-us; q=0.7, en:q=0.3
Accept-Charset  : Shift_JIS,utf-8; q=0.7,*;q=0.7
<br>
<syntaxhighlight lang="apache">
# httpd.confファイル
<Directory "/srv/www/htdocs">
    # MultiViews : コンテントネゴシエーションを有効にする
    Options FollowSymLinks MultiViews
    # AddLanguage : 拡張子を言語指定に関連付ける
    AddLanguage en .en
    AddLanguage ja .ja
    # AddCharset : 拡張子を文字コード指定に関連付ける
    AddCharset shift_jis .sjis
</Directory>
</syntaxhighlight>
<br>
ドキュメントルートに日本語のページ(lang.html.ja)と英語のページ(lang.html.en)を配置してアクセスする。<br>
* http://example.com/lang.html
* http://example.com/lang.html.ja
* http://example.com/lang.html.en
<br>
<syntaxhighlight lang="html">
<!-- lang.html.ja -->
<html>
    <head>
      <META http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>日本語のページ</title>
    </head>
    <body>
      <p>日本語のコンテンツ</p>
      <p>English Content</p>
    </body>
</html>
</syntaxhighlight>
<br>
<syntaxhighlight lang="html">
<!-- lang.html.en -->
<html>
    <head>
      <META http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>English Page</title>
    </head>
    <body>
      <p>日本語のコンテンツ</p>
      <p>English Content</p>
    </body>
</html>
</syntaxhighlight>
<br>
HTTPリクエストヘッダで優先順位が決まらない、または、指定が無い場合は、<code>LanguagePriority</code>、<code>AddDefaultCharset</code>の設定を参照すること。<br>
<syntaxhighlight lang="apache">
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
AddDefaultCharset off
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>

案内メニュー