Apache HTTP サームãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.2
ウェブマスターãŒä½•らã‹ã®ã‚¨ãƒ©ãƒ¼ã‚„å•題ã«å¯¾ã™ã‚‹ Apache ã®å応をè¨å®šã§ãるよã†ã«ã™ã‚‹è¿½åŠ æ©Ÿèƒ½ã‚’æä¾›ã—ã¾ã™ã€‚
サーãƒãŒã‚¨ãƒ©ãƒ¼ã‚„å•題を発見ã—ãŸå ´åˆã®å応を〠カスタマイズã—ã¦å®šç¾©ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
スクリプトã®å®Ÿè¡ŒãŒå¤±æ•—ã—㦠"500 Server Error" を発生ã•ã›ãŸã¨ã—ã¾ã™ã€‚ã“ã®å ´åˆã®å応をã€ã‚ˆã‚Šå¥½ã¾ã—ã„テã‚ストやã€åˆ¥ã® URL (内部åŠã³å¤–部) ã¸ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«ç½®ãæ›ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
NCSA httpd 1.3 ã¯ã€å¤ãã¦é€€å±ˆãªã‚¨ãƒ©ãƒ¼/å•題メッセージを è¿”ã—ã¦ã„ã¾ã—ãŸã€‚ãれã¯ã—ã°ã—ã°ãƒ¦ãƒ¼ã‚¶ã«ã¯ç„¡æ„味ã§ã‚り〠ã¾ãŸãれを発生ã•ã›ãŸåŽŸå› ã‚’è¨˜éŒ²ã™ã‚‹æ–¹æ³•ã‚‚æä¾›ã—ã¦ã„ã¾ã›ã‚“ã§ã—ãŸã€‚
ã™ã‚‹ã‚ˆã†ã«ã‚µãƒ¼ãƒã‚’è¨å®šã§ãã¾ã™ã€‚
別㮠URL ã«ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã™ã‚‹ã“ã¨ã¯å½¹ã«ç«‹ã¡ã¾ã™ãŒã€ ãれã¯èª¬æ˜Žã‚’ã—ãŸã‚Šã€ã‚ˆã‚Šæ˜Žç¢ºã«èª¤ã‚Š/å•題を記録ã—ãŸã‚Šã™ã‚‹ãŸã‚ã« ä½•ã‹æƒ…å ±ã‚’ä¼ãˆã‚‰ã‚Œã‚‹ã¨ãã«é™ã‚Šã¾ã™ã€‚
ã“れを実ç¾ã™ã‚‹ãŸã‚ã«ã€ Apache ã¯æ–°ã—ã CGI ã®ã‚ˆã†ãªç’°å¢ƒå¤‰æ•°ã‚’ 定義ã—ã¾ã™:
REDIRECT_HTTP_ACCEPT=*/*, image/gif,
image/x-xbitmap, image/jpeg
REDIRECT_HTTP_USER_AGENT=Mozilla/1.1b2 (X11; I; HP-UX
A.09.05 9000/712)
REDIRECT_PATH=.:/bin:/usr/local/bin:/etc
REDIRECT_QUERY_STRING=
REDIRECT_REMOTE_ADDR=121.345.78.123
REDIRECT_REMOTE_HOST=ooh.ahhh.com
REDIRECT_SERVER_NAME=crash.bang.edu
REDIRECT_SERVER_PORT=80
REDIRECT_SERVER_SOFTWARE=Apache/0.8.15
REDIRECT_URL=/cgi-bin/buggy.pl
é ã«ä»˜ã REDIRECT_
ã«æ³¨ç›®ã—ã¦ãã ã•ã„。
å°‘ãªãã¨ã‚‚ REDIRECT_URL
ã¨
REDIRECT_QUERY_STRING
ã¯æ–°ã—ã„ URL (CGI スクリプトã‹
CGI インクルードã§ã‚ã‚‹ã¨ä»®å®šã•れã¾ã™) ã«æ¸¡ã•れã¾ã™ã€‚
ä»–ã®å¤‰æ•°ã¯ã€ã‚¨ãƒ©ãƒ¼ã‚„å•題ãŒèµ·ãã‚‹å‰ã«å˜åœ¨ã—ãŸå ´åˆã«ã ã‘å˜åœ¨ã—ã¾ã™ã€‚
ã‚‚ã—ã‚ãªãŸã®è¨å®šã—㟠ErrorDocument
㌠外部リダイレクト
(ã™ãªã‚ã¡ã€http:
ã®ã‚ˆã†ãªä½“ç³»åã‹ã‚‰å§‹ã¾ã‚‹ã™ã¹ã¦ã®ã‚‚ã®ã€‚ãŸã¨ãˆåŒã˜ãƒ›ã‚¹ãƒˆã‚’指ã—ã¦ã„ã¦ã‚‚)
ãªã‚‰ã°ã€ã“れらã¯ã¾ã£ãŸãè¨å®šã•れã¾ã›ã‚“。
AllowOverride
ãŒé©åˆ‡ã«è¨å®šã•れã¦ã„れã°ã€
.htaccess ファイル㧠ErrorDocument
を使用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
ã“ã“ã«ã€ã„ãã¤ã‹ã®ä¾‹ã‚’挙ã’ã¾ã™ã€‚
ErrorDocument 500 /cgi-bin/crash-recover
ErrorDocument 500 "Sorry, our script crashed. Oh dear"
ErrorDocument 500 http://xxx/
ErrorDocument 404 /Lame_excuses/not_found.html
ErrorDocument 401 /Subscription/how_to_subscribe.html
æ§‹æ–‡
ErrorDocument <3-digit-code> <action>
action (動作) ã¯ã€
スクリプト/SSI ã«è¿½åŠ ã®ç’°å¢ƒå¤‰æ•°ãŒåˆ©ç”¨å¯èƒ½ã«ãªã‚‹ã‚ˆã†ã«ã€ リダイレクトã•れ㟠URL ã«å¯¾ã™ã‚‹ Apache ã®å‹•作ãŒå¤‰æ›´ã•れã¾ã—ãŸã€‚
リダイレクトã•れãŸã‚¹ã‚¯ãƒªãƒ—ãƒˆã¯æ¨™æº–ã® CGI 環境変数を利用å¯èƒ½ã§ã—ãŸã€‚ã—ã‹ã—ã€ã©ã“ã‹ã‚‰ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ ã•れãŸã‹ã®æƒ…å ±ã¯æä¾›ã•れã¦ã„ã¾ã›ã‚“ã§ã—ãŸã€‚
リダイレクトã•れãŸå…ˆã®ã‚¹ã‚¯ãƒªãƒ—トãŒä½¿ç”¨å¯èƒ½ãªã‚ˆã†ã«ã€
æ–°ã—ã„ãŸãã•ã‚“ã®ç’°å¢ƒå¤‰æ•°ãŒåˆæœŸåŒ–ã•れã¾ã™ã€‚æ–°ã—ã„変数ã¯ã€ãれãžã‚Œ
REDIRECT_
ã§å§‹ã¾ã‚Šã¾ã™ã€‚
REDIRECT_
ã§å§‹ã¾ã‚‹ç’°å¢ƒå¤‰æ•°ã¯ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã•れるå‰ã«å˜åœ¨ã—ã¦ã„ãŸ
CGI 環境変数ã®é ã« REDIRECT_
を付ã‘ã¦ä½œæˆã•れã¾ã™ã€‚
ã™ãªã‚ã¡ã€HTTP_USER_AGENT
ã¯
REDIRECT_HTTP_USER_AGENT
ã«ãªã‚Šã¾ã™ã€‚
ã“ã‚Œã‚‰ã®æ–°ã—ã„変数ã«åŠ ãˆã¦ã€Apache ã¯ã€
スクリプトãŒãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆå…ƒã®ãƒˆãƒ¬ãƒ¼ã‚¹ã‚’助ã‘ã‚‹ãŸã‚ã«
REDIRECT_URL
㨠REDIRECT_STATUS
を定義ã—ã¾ã™ã€‚アクセスãƒã‚°ã«ã¯å…ƒã® URL ã¨ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã•れ㟠URL
ã®ä¸¡æ–¹ãŒè¨˜éŒ²ã•れã¾ã™ã€‚
ErrorDocument ㌠CGI スクリプトã¸ã®ãƒãƒ¼ã‚«ãƒ«ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã‚’
指定ã—ã¦ã„ã‚‹å ´åˆã¯ã€ãれを起動ã™ã‚‹ã“ã¨ã«ãªã£ãŸã‚¨ãƒ©ãƒ¼ã®çŠ¶æ…‹ã‚’
クライアントã¾ã§ç¢ºå®Ÿã«ä¼ãˆã‚‹ãŸã‚ã« "Status:"
ヘッダをå«ã‚€ã¹ãã§ã™ã€‚例ãˆã°ã€ErrorDocument 用㮠Perl
スクリプトã¯ä»¥ä¸‹ã®ã‚ˆã†ãªã‚‚ã®ã‚’å«ã‚€ã‹ã‚‚ã—れã¾ã›ã‚“。
...
print "Content-type: text/html\n";
printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"};
...
スクリプト㌠404 Not Found
ã®ã‚ˆã†ãª
特定ã®ã‚¨ãƒ©ãƒ¼ã‚³ãƒ³ãƒ‡ã‚£ã‚·ãƒ§ãƒ³ã‚’扱ã†ãŸã‚ã ã‘ã«ä½¿ã‚ã‚Œã‚‹å ´åˆã¯ã€
代ã‚りã«ç‰¹å®šã®ã‚³ãƒ¼ãƒ‰ã¨ã‚¨ãƒ©ãƒ¼ãƒ†ã‚ストを使用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚