表示サンプル: このページの修正箇所は次のように表示されます。
サーバーサイド・スクリプト言語、及びリダイレクトためのURL又はURLパターンのあるサーバ環境設定ファイルを含む、サーバーサイドのウェブコンテンツ技術
これは、次の達成基準に関連する実装方法である:
この実装方法の目的は、あるページ(利用者によって要求されたページ)が別のページにリダイレクトされたために、2つの新しいページが間断なく読みこまれることによって引き起こされる混乱を回避することである。いくつかのユーザーエージェントは、利用者を指定された秒数の後に別のページにリダイレクトするHTMLのmeta
要素の使用をサポートしている。これは、一部の利用者、特にスクリーンリーダーを使用している利用者にとって、ページをアクセシブルではないものにしている。サーバーサイドのウェブコンテンツ技術は、利用者を混乱させないリダイレクトを実装する方法を提供している。サーバーサイド・スクリプト又はサーバ環境設定ファイルで、3xx番台のステータスコード、及び転送先のURLのLocationヘッダーを持つ適切な HTTPレスポンスをサーバが送るようにできる。ブラウザがこのレスポンスを受けると、ロケーションバーが変わり、ブラウザは新しいURLのリクエストをする。
Java サーブレット又はJavaServer Pages(JSP)では、開発者は HttpServletResponse.sendRedirect(String url)
を使用できる。
コード例:
…
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
…
response.sendRedirect("/newUserLogin.do");
}
このコードは、302ステータスコード(「Found」)及び新しいURLのLocationヘッダーを含むレスポンスをユーザーエージェントに送る。また、response.sendError(int code, String message)
で、ステータスコードとしてインタフェース javax.servlet.http.HttpServletResponse で定義されている定数の一つを用いて、別のステータスコードに設定することも可能である。
コード例:
…
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
…
response.sendError(response.SC_MOVED_PERMANENTLY, "/newUserLogin.do");
}
アプリケーションがセッションに依存するために、アプリケーションがURLのリライトに HttpServletResponse.encodeURL(String url)
を使用するなら、メソッド HttpServletResponse.encodeRedirectURL(String url)
が HttpServletResponse.sendRedirect(String url)
の代わりに使用されるべきである。また、HttpServletResponse.encodeURL(String url)
でURLをリライトして、それから HttpServletResponse.sendRedirect(String url)
にこのURLを渡すことも可能である。
VBScriptで書かれたActive Server Page(ASP)では、開発者は Response.Redirect
を使用できる。
コード例:
Response.Redirect "newUserLogin.asp"
又は
コード例:
Response.Redirect("newUserLogin.asp")
以下のコードは、特定のHTTPステータスコードを含む、より完全な例である。
コード例:
Response.Clear
Response.Status = 301
Response.AddHeader "Location", "newUserLogin.asp"
Response.Flush
Response.End
PHPでは、開発者は header
メソッドで生のHTTPヘッダーを送ることができる。以下のコードは、301ステータスコードと新しい場所を送る。ステータスが明示的に設定されないなら、リダイレクトのレスポンスはHTTPステータスコード302を送る。
コード例:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.example.com/newUserLogin.php");
?>
以下の例のようにして、開発者は Apache ウェブサーバがリダイレクトを処理するように構成できる。
コード例:
redirect 301 /oldUserLogin.jsp http://www.example.com/newUserLogin.do
この参考リソースは、あくまでも情報提供のみが目的であり、推薦などを意味するものではない。
Use standard redirects: do not break the back button! (W3C QA Tip).
HTTP 301 Permanent Redirection Techniques by Shailesh N. Humbad.
Interface javax.servlet.http.HttpServletResponse in the Java Servlets 2.3 API documentation.
Apache Module mod_alias in the Apache HTTP Server Version 2.2 Documentation describes how redirects can be specified in Apache 2.2.
Module mod_alias in the Apache HTTP Server Version 1.3 Documentation describes how redirects can be specified in Apache 1.3.
(今のところ、なし。)
別のウェブページへのリンク又はプログラムによる参照を見つける。
ウェブページ一式におけるURIのリンク又はプログラムによる参照において、参照されたウェブページがクライアントサイド・リダイレクトを引き起こすコード(例えば、meta要素又はスクリプト)を含んでいない。
ウェブページ一式におけるURIのリンクやプログラムによる参照において、参照されたURIがリダイレクトしない、又は、一時停止なしのサーバーサイド・リダイレクトをする。
2. 及び 3. を満たしている。
注意: この実装方法が「達成基準を満たすことのできる実装方法」の一つである場合、このチェックポイントや判定基準を満たしていなければ、それはこの実装方法が正しく用いられていないことを意味するが、必ずしも達成基準を満たしていないことにはならない。場合によっては、別の実装方法によってその達成基準が満たされていることもありうる。
日本語訳における注記:
この文書の正式版は、W3Cサイトで公開されている英語の文書であり、この日本語訳には誤訳が含まれていることもありえます。なお、文中にある「日本語訳における注記」は、W3Cの原文にはないものであり、日本語訳監修者が追記したものです。