標準出力

新しいもの、変わらないこと 自分の頭を通して考えてみました (stdout)

mod_rewrite 具体例 #1

apachemod_rewriteでハマったので
具体的にやりたい事と設定例を投稿していきます。

=今回やりたいこと=
http://hoge.ne.jp/appdir-name/foo/bar
へのアクセスを
http://hoge.ne.jp/appdir-name/index.php
へのアクセスに変える。

mod_rewriteの設定をする上でポイントは、
公式のドキュメント参照
■RewriteLogでログ出力して処理の流れを把握する
に尽きます。

まずは、rewriteモジュールがインストールされており、apacheにロードされているかの確認。httpd.confに下行があればok
LoadModule rewrite_module libexec/apache22/mod_rewrite.so


そして、rewriteのログ出力を行うようにhttpd.confに下行を追加 (なお、思うような挙動になったらログ出力をしないようにしておこう-> LogLevel 0にする)

RewriteLog /var/log/apache22/rewrite.log
RewriteLogLevel 7

上記のログファイルがない場合は、適宜作成しapacheのプロセスが書き込めるようにパーミッションを設定しておく。

当方の環境では、httpd.confに
Include etc/apache22/Includes/*.conf
とあるので/usr/local/etc/apache22/Includesに専用の設定ファイルである

appdir-name.confを作成して下記を記入。

  2
  3 Order Allow,Deny
  4 Allow from all
  5
  6 RewriteEngine on
  7 RewriteBase /appdir-name
  8 RewriteRule ^.*/.*$ index.php
  9


ポイントは、7行目で先頭にスラッシュを含んで末尾にはスラッシュを含まないこと。さらに8行目の先頭にはスラッシュを含まないことです。

以上で設定が完了したのでapacheを再起動します。
/usr/local/etc/rc.d/apache22 restart