Я хочу включить ведение журнала перезаписи, чтобы я мог отлаживать правило перезаписи, но добавление директив 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:'
Не могу не повторяться:
Большинство людей, которые используют .htaccess и спрашивают об этом на ServerFault, не должны использовать .htaccess в первую очередь, поскольку это решение для конечных пользователей, никогда не предназначенное для администраторов:
Вам следует полностью избегать использования файлов .htaccess если у вас есть доступ к файлу конфигурации главного сервера httpd. С помощью
.htaccess
files замедляет работу вашего HTTP-сервера Apache. Любую директиву, которую вы можете включить в файл .htaccess, лучше установить в блоке Directory, так как это будет иметь тот же эффект с лучшей производительностью.
Источник: Руководство по Apache
По-видимому, большинство людей, публикующих свои конфигурации, карго культовые программисты увлекается копированием файлов .htaccess вслепую, не понимая причин.
Ваша проблема - яркий пример: RewriteLog
директива действительна только в контекст конфигурации сервера или виртуального хоста ...
Значит, это не допускается в .htaccess
файл!