为什么启用.htaccess中的重写日志不起作用?

我想启用重写日志logging,以便我可以debugging重写规则,但添加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 

除了忘记日志logging不能在.htaccess文件中configuration,这也是一个Apache版本的问题。 RewriteLog指令已在新版本中被replace,并将以下内容添加到虚拟主机configuration中为我启用了重写日志:

 LogLevel alert rewrite:trace3 (can be increased to trace8) 

从手册:

熟悉早期版本的mod_rewrite的人无疑会在寻找RewriteLog和RewriteLogLevel指令。 这个function已经完全被上面提到的新的每个模块的日志configuration所取代。

要在错误日志中过滤这些消息,您可以执行如下操作:

 tail -f error_log|fgrep '[rewrite:' 

我忍不住重复自己:

在ServerFault上使用.htaccess并询问它的大多数人不应该首先使用.htaccess,因为这是一个永远不会用于pipe理员的最终用户解决scheme:

如果您有权访问httpd主服务器configuration文件,则应该完全避免使用.htaccess文件。 使用.htaccess文件会降低您的Apache HTTP服务器速度。 您可以包含在.htaccess文件中的任何指令在目录块中设置得更好,因为它具有相同的效果,性能更好。
资料来源: Apache手册

显然,大多数公布他们的configuration的人似乎是货物崇拜的程序员,热衷于复制.htaccess文件盲目不知道原因。

你的问题是一个很好的例子: RewriteLog指令只在服务器configuration或虚拟主机上下文中有效。

这意味着它不允许.htaccess文件中!