Apache 使用 mod_rewrite 可以設定轉址,但是轉址一直沒有朝自己想的設定方向走,要怎麼 Debug 呢?
Apache 2.4 開啟 Rewrite Log 查看詳細轉址紀錄
於 Apache 2.2 版時,使用的是下述:
RewriteEngine on RewriteLog /path/to/log RewriteLogLevel 2
於 Apache 2.4 版後,將 RewriteLog 指定檔案的部分,跟 ErrorLog 的檔案做整合了,所以會將 Log 寫到 ErrorLog 指定的檔案過去。
文件:mod_rewrite - Apache HTTP Server Version 2.4
設定方式
- LogLevel alert rewrite:trace3 # 重點在此行,啟用 Rewrite Log 紀錄
- ErrorLog /var/log/apache2/error.log # 看 ErrorLog 要寫去哪邊
範例
- vim /etc/apache2/sites-enabled/000-default.conf # 加入下述
<IfModule mod_rewrite.c>
LogLevel alert rewrite:trace3
RewriteEngine On
RewriteRule ^/$ /index.php?%{QUERY_STRING} [PT,L]
</IfModule> - /etc/init.d/apache2 reload
- tail -f /var/log/apache2/error.log | fgrep '[rewrite:' # 查看 rewrite 的詳細流程