読者です 読者をやめる 読者になる 読者になる

woshidan's blog

そんなことよりコードにダイブ。

ApacheでURLリライトをmod_rewriteを使って実行しようと思ったら詰んだ

phpのセッションIDを透過的URLリライティング(というか今回はセッション+Cookie使えそうなことが分かったので現状は使わなくてもいいのですが……)みたいなことを言ってもやっぱり何がなにやらよく分かってないので、少し勉強して格闘して挫折した記録を残しておきます。。

 

そもそもURLリライトとは?

URLのリライトとは、ブラウザのアドレスバーに表示されるURLとは異なるURLの内容をサーバーから返すこと  --- http://web-tan.forum.impressrd.jp/e/2009/06/15/5827より

 

で、何を使ってやるの?

 Apache(Webサーバー用のソフトウェア。世界の6割以上のWebサーバがこれで動いているらしい)

 

グーグル先生に聞いた結果、URLのリライトはApachemod_rewriteを使ってやることが多いようです。

で、URLリライトの手順は?

  1. Apacheをインストール
  2. mod_rewriteモジュールを組み込まれるようにhttpd.confを設定する
  3. 動作させたいWebディレクトリの中に .htaccessというファイルを作成してその中にURLリライトのためのコードを書く

コードはどう書くの?

参考は、http://rfs.jp/server/apache/02apache/url_rewrite.html

<IfModule mod_rewrite.c>

     RewrireEngine On

    リライト機構を作動させるかどうか

     RewriteCond %{サーバ変数名} 正規表現パターン

    サーバ変数が正規表現で書かれた条件を満たすなら次の処理をする

     RewriteRule 正規表現パターン 置換パターン オプション

 正規表現パターンに合うurlをリライトする

</IfModule>

 

で、動いたの?

……いいえorz

 

ここ(http://ms2.seesaa.net/article/168747804.html)にしたがってチェックしていって

  • .htaccessが有効なこと(.htaccessの頭にtestと入れたらError 500が出た)
  • mod_rewriteが組み込まれていること(httpd.confでLoadmoduleの前に#が入ってない、またhttpd -Mでもmod_rewriteが含まれていることを確認)

 

じゃあ、正規表現

と思ってlogをdebugレベルで吐き出させるようにしました。

なんか文法ミスが見つかるのだろうと期待したのですが……

 

[Mon Dec 09 08:32:03.418594 2013] [mpm_winnt:debug] [pid 5020:tid 1828] child.c(354): AH00334: Child: Accept thread listening on [::]:80 using AcceptFilter none

が多量に登場して、

RSAとかSSLがうんたらが繰り返していたので、意味が分からなくなって諦めました。。

 

ログを読むほどApacheに詳しくない(これが実質はじめて存在を認知したようなもの←)ので、とりあえず下の本を買って、後で読むことにしたのでした……。

 

できるPRO Apache Webサーバー 改訂版 Version 2.4/2.2/2.0対応

できるPRO Apache Webサーバー 改訂版 Version 2.4/2.2/2.0対応