mod_rewriteの置き換えURLをチェックする

Apacheのmod_rewriteを使って、URLを変換していると、どうにも巧く動かないときがある。
想定と違う動き(404とか)していても、一体どう変わっていて失敗しているのかが全然解らない…そんなレベルのときもある。

そんなとき、何がどう書き変わったのかリダイレクトを記録したログで確認出来る。
※これはapache2.4以降の話。それ以前では別の設定と確認方法なので注意!

ログ確認方法

まずサーバにsshで入るか
※winSCPあたりで入っても確認出来る。

大概は下記にエラーログがあるので、そこへ移動(cd)。

/var/log/apache2/
/var/log/httpd/

※場所が解らなかったら『httpd.conf』の記載で場所を確認。
 大概『/etc/httpd/conf/』『/etc/apache2/』『/usr/local/apache2/conf/』あたりにある。

puphpetの場合、エラーログファイル名は『config.yaml』を確認。

apache:
  ~中略~
    vhosts:
        example_string_aaa: ←ここの文字列
            servername: example.com
            server_aliases:
  ~以下略~

上記の場合は『examplestring_error.log』という感じ。

連動して動きが見たいなら、コマンド実行で見張っていられる。

tail -f 【エラーログファイル名】|fgrep '[rewrite:'

※移動せずディレクトリごと指定も可能

エラーログは大体+日時で下記のような形で記録されている。

[Thu Nov 15 12:34:56.765432 2018] [rewrite:trace3] [pid 9999:tid 999999999999999] mod_rewrite.c(482): [client 192.168.10.100:99999] 192.168.10.100 - - [example.com/sid#7efce235eee0][rid#7efcd8063a58/initial/redir#1] [perdir /www/example/public/] applying pattern '^(.*)$' to uri 'index.php'
[Thu Nov 15 12:34:56.765432 2018] [rewrite:trace4] [pid 9999:tid 999999999999999] mod_rewrite.c(482): [client 192.168.10.100:99999] 192.168.10.100 - - [example.com/sid#7efce235eee0][rid#7efcd806b0a0/initial] [perdir /www/example/public/public/] RewriteCond: input='/www/example/public/aaaaa' pattern='!-l' => matched

ログ出力設定

もし上記のような文が出ていなければ『LogLevel』が不足している。

『httpd.conf』に下記を設定する。
大概コメントアウトされてるとかであると思う。無ければ追加。

LogLevel info rewrite:trace8

レベルは trace1 ~ trace8で8が一番詳しい。
※8は本当にログが多くなるので、運用するサーバでは止めておいた方が無難。
 3か4くらいかな?

PuPHPet使用者は『config.yaml』に

apache:
    install: '1'
    settings:
        log_level: info rewrite:trace8 ←これを追加

※ssh-configで出るLogLevelとは違うので注意。

コメント

タイトルとURLをコピーしました