Почему включение является переписыванием, входят в систему .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
9
задан 27 February 2015 в 08:14
2 ответа

Помимо того, что я забыл, что ведение журнала не может быть настроено в файлах .htaccess , это также оказалось быть проблемой версии Apache. Директива RewriteLog была заменена в более новых версиях, и добавление следующего в конфигурацию Virtualhost позволило мне перезаписать журнал:

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

Из руководства:

Те, кто знаком с более ранними версиями mod_rewrite, несомненно, будут искать RewriteLog и Директивы RewriteLogLevel. Эта функциональность была полностью заменена новой конфигурацией ведения журнала для каждого модуля, упомянутой выше.

Чтобы отфильтровать эти сообщения в журнале ошибок, вы можете сделать что-то вроде:

tail -f error_log|fgrep '[rewrite:'
14
ответ дан 2 December 2019 в 22:24

Я не могу не повторяться:

Большинство людей используют. htaccess и спросите об этом на ServerFault, в первую очередь не следует использовать .htaccess, поскольку это решение для конечных пользователей и никогда не предназначалось для администраторов:

Вам следует полностью избегать использования файлов .htaccess , если у вас доступ к конфигурационному файлу главного сервера httpd. Использование файлов .htaccess замедляет работу вашего HTTP-сервера Apache. Любую директиву, которую вы можете включить в файл .htaccess, лучше установить в блоке Directory, так как это будет иметь тот же эффект с более высокой производительностью.
Источник: Apache manual

Очевидно, большинство людей, публикующих свои конфигурации похоже, культовые программисты увлечены копированием файлов .htaccess вслепую, не понимая причин.

Ваша проблема является ярким примером: директива RewriteLog действительна только в контексте конфигурации сервера или виртуального хоста ...

Это означает, что это запрещено в файле .htaccess !

4
ответ дан 2 December 2019 в 22:24

Теги

Похожие вопросы