Mod-Rewrite
為什麼在 .htaccess 中啟用重寫日誌不起作用?
我想啟用重寫日誌記錄,以便我可以調試重寫規則,但添加 RewriteLog 指令會導致 500 錯誤。
版本資訊:
Ubuntu 14.04 Server version: Apache/2.4.12 (Ubuntu) Server built: Feb 4 2015 14:22:06
的內容
.htaccess
<IfModule mod_rewrite.c> RewriteEngine On RewriteLog /var/log/apache2/rewrite.log RewriteLogLevel 5 RewriteBase / RewriteRule ^/wordpress/wp-content/(.*)$ /wp-content/$1 [L] RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
在錯誤日誌中,我看到:
/var/www/path.to/wordpress/.htaccess: Invalid command 'RewriteLog', perhaps misspelled or defined by a module not included in the server configuration
除了忘記了無法在
.htaccess
文件中配置日誌記錄之外,這也是一個 Apache 版本問題。RewriteLog 指令已在較新版本中被替換,並將以下內容添加到 Virtualhost 配置為我啟用了重寫日誌:LogLevel alert rewrite:trace3 (can be increased to trace8)
從手冊:
那些熟悉 mod_rewrite 早期版本的人無疑會尋找 RewriteLog 和 RewriteLogLevel 指令。此功能已完全被上面提到的新的每模組日誌記錄配置所取代。
要過濾掉錯誤日誌中的這些消息,您可以執行以下操作:
tail -f error_log|fgrep '[rewrite:'