会社が休みに入ると仕事ができていいですね(え
Apacheモジュールで処理を行った結果、404(Not Found)のHTTPステータスコードを返したい場合があります。その場合、2種類の方法があります。
ap_hook_handler
で登録したフック関数の戻り値で404を返すap_hook_handler
で登録したフック関数の引数 request_rec
構造体の status
の値を変更する(戻り値は0=OKを返す)さて、2つの違いは何でしょう。答えは、レスポンスボディに何が出力されるか、ということろに違いがあります。
Apacheのフックの処理の流れから考えてみましょう。とりあえず、今回ポイントとなっているあたりを概略図にすると下記のようになります。
Apacheがいろいろなフックを呼びだし、誰かが処理を担当してくれたらそれを返す、誰も処理してくれなかったらエラー処理して返す、という感じでしょうか。
このとき、フック関数の戻り値で404を返すと下記のように処理が流れます。
エラー処理のほうに流れるわけですね。よって、エラー処理で生成されたレスポンスボディが返されます。Apacheの設定で ErrorDocument
ディレクティブを設定している場合、指定されているコンテンツがレスポンスされます。
一方、request_rec
構造体の status
の値を変更する場合、フック関数自体はOK(処理完了)を返すので、エラーレスポンスには処理が流れません。よって、 ap_rwrite
などでレスポンスボディをセットしていれば、その内容がレスポンスされます。
この動きは、404エラーに限らず、500(Internal Server Error)などでも同様です。
これを理解できると、
ErrorDocument
ディレクティブで設定された 404 ページを表示させたいなど便利な使い方ができます。
Apacheモジュール開発している人なんてあまりいないと思いますが、ご参考までに!
2015/12/30 20:23:08 | Trackbacks (0) | Comments (0) | Technology
しかーし、金かかるし、なかなかうまくならないし、今のところ費用対効果の悪い投資です。
来年はもう少しちゃんと練習しましょう。
HDDが壊れたことに便乗して、CPU・マザボ・メモリ・HDD・ケース全面的に買い換えしました。
結構な金額になってしまったのがイタイですが、まぁ仕事道具なので必要経費です。どうぐだいじ。
i7はIvy BridgeからSkylakeに乗り換えですが、あまり早くなった気がしませんね。まぁIvy Bridgeでも全く不自由してなかったので、その程度にしかCPUを使っていないのかもしれません。
それよりも、最近のパソコンではディスクIOが体感スピードに影響していそうですよね。
機会を見てM2接続のSSDがほしいところです。(しかし再インストールは面倒)
マジこれいいよ!! なんで今まで使わなかったんだろう。
音波歯ブラシ使ってない人へこれを言いたくてブログを書いたようなものです。
昔の電動歯ブラシのイメージが強くて、手磨きのほうがよく磨けるっしょー、としか思っていなかったんです。ところが、ひょんなことからポケットドルツを使ってみたところ、これは案外いいかも!と思い、それならポケットじゃないドルツはもっといいでしょ!と思って入手しました。
音波歯ブラシにしてから、歯もツルツルになって口臭も減った(?)気がします。(いつまで続くかわかりませんが)最近はこれにフロスとデンタルリンスも使ってしっかりケアするよう心がけています。
歯が綺麗になったおかげで、歯石がすげー気になるようになっちゃったんですよね。歯医者行かなきゃ・・・。
2015/12/29 04:59:56 | Trackbacks (0) | Comments (0) | Pastime