- PR -

1つのファイルを2つに分割した場合のHTTPステータス・コードは?

1
投稿者投稿内容
mongar
会議室デビュー日: 2007/04/14
投稿数: 5
投稿日時: 2008-02-05 21:52
例えば「aaabbb.html」と言うファイルがあったとして、これを「aaa.html」と「bbb.html」という2つのファイルに分割したとします。
この時、「aaabbb.html」へのリクエストに対してサーバーが返すHTTPステータスコードは「300 Multiple Choices」とすべきでしょうか、それとも「301 Moved Permanently」とすべきでしょうか。
また、その際に返すLocationヘッダは「aaa.html」「bbb.html」いずれか1行にすべきでしょうか、それとも両方のファイル名を返すため、Locationヘッダを2行にすべきでしょうか。
ちなみに、ヘッダの内容を
Location: aaa.html
Location: bbb.html
としたCGIにIE6とFireFox2からリクエストを送ってみたところ、IEでは「aaa.html」が表示され、FireFoxでは「bbb.html」が表示されました。
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2008-02-06 17:30
「300 Multiple Choices」の意味を取り違えてませんか?300の場合はBODY部で選択肢を提示しないといけません。つまりこんなヤツです(Wikipediaに例示されてます)。

引用:

mongarさんの書き込み (2008-02-05 21:52) より:
IEでは「aaa.html」が表示され、FireFoxでは「bbb.html」が表示されました。


ブラウザはどちらかしか表示しないのです(ある意味当たり前の動作です)から、Locationヘッダを複数送出しても意味がないのですが・・。何のためにファイルを2つに分けたんでしょう?ちょっと意図がつかめません。
mongar
会議室デビュー日: 2007/04/14
投稿数: 5
投稿日時: 2008-02-06 18:15
shimix さん、ご返答ありがとうございます。

引用:

「300 Multiple Choices」の意味を取り違えてませんか?300の場合はBODY部で
選択肢を提示しないといけません。


http://www.studyinghttp.net/status_code#Code300
> もし HEAD リクエストでなければ、レスポンスはエンティティにユーザか
> ユーザエージェントが最も適切なものを選択するためのリソースの特徴と
> 場所のリストを含むべきである。

この意味が分からなかったのですが、「場所のリスト」は本文に記述すると
言うことですね。勉強不足でした。

引用:

何のためにファイルを2つに分けたんでしょう?ちょっと意図がつかめません。


ファイルを分ける理由は、月ごとに1ページとなっていたエントリーを、日ごとに
1ページとする必要が出てきたからです。
現在の所、対象のページに直接来訪するユーザーはいない為、ページ移動を通達する
相手は、主に検索ロボットと言うことになります。
リクエストに対して複数の選択肢が存在すると言う意味では、
「300 Multiple Choices」が適当かとは思うのですが、新たに恒久的URIが与えられた
と言う意味では、「301 Moved Permanently」が適当であるとも考えられ、決めかねて
いる状態です。
HTTPステータスコードの「しきたり」に関しては知識不足であるため、こちらで
ご相談させていただくことに致しました。
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2008-02-07 10:39
引用:

mongarさんの書き込み (2008-02-06 18:15) より:
ファイルを分ける理由は、月ごとに1ページとなっていたエントリーを、日ごとに
1ページとする必要が出てきたからです。
現在の所、対象のページに直接来訪するユーザーはいない為、ページ移動を通達する
相手は、主に検索ロボットと言うことになります。


直接来訪するユーザがいないのに、なぜ検索ロボットに対策する必要があるのかが理解出来ません。「直接来訪=検索結果から」という認識なんですが間違ってますかね。

たとえば200802.htmlを20080201.html、20080202.html、20080203.htmlに分割したのであれば、200802.htmlには各日別ページへのリンクだけを置いておけばいいのでは?あえてmovedにする必要はないと思うのですが・・。

分割したファイル名の条件さえ一定であれば、200802.htmlはphpが利用可能(かつ.htmlをphp動作させる設定が可能)ならphpスクリプトで書いてしまってもいいですね(多分私ならそうする・・)。

[ メッセージ編集済み 編集者: shimix 編集日時 2008-02-07 10:41 ]
mongar
会議室デビュー日: 2007/04/14
投稿数: 5
投稿日時: 2008-02-07 12:34
引用:

shimixさんの書き込み (2008-02-07 10:39) より:
直接来訪するユーザがいないのに、なぜ検索ロボットに対策する
必要があるのかが理解出来ません。


来訪者はいないものの、検索エンジンにインデックスはされている為、
出来ればその評価を新たなページに引き継ぎたいと考えています。
また、検索ロボットに対して正しい通達を出すことで、検索結果への
反映を早めたいとも考えています。対策を行った場合と行わなかった
場合とで、どの程度結果が変わってくるのかは分からないのですが・・・。
現状では、旧ページへのリクエストに対しては、以下のような形で
対応したいと考えています。

コード:
RewriteRule ^([0-9]{4}+)([0-9]{2}+)¥.html$ rewrite.jsp?year=$1&mon=$2 [L]

rewrite.jspの内容
 <%
  // ステータスをセット
  response.setStatus(???);
  // Locationヘッダをセット
  response.addHeader("location", "http://example.com/" + year + mon + "???.html");
  // YYYYMM.htmlに相当するファイルを検索
  File[] files = new File(DocumentRoot + "/" + year + mon + "/").listFiles();
 %>
 <html>
  <body>
   <% // リンクの書き出し %>
   <% for(int i; i < files.length(); i++) { %>
    <a href="http://example.com/<%= files[i].getName() %>">PAGE <%= i %></a><br>
   <% } %>
  </body>
 </html>


上記の中の???の部分をどうすべきか、判断しかねている
状態です。
「対策をしても無意味」と言ったご意見でも結構ですので、ご教示
いただければ幸いです。
1

スキルアップ/キャリアアップ(JOB@IT)