Чому ввімкнення входу для перезапису .htaccess не працює?


9

Я хочу ввімкнути журнал перезапису, щоб я міг налагоджувати правило переписати, але додавання директив 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

Відповіді:


14

Окрім того, що забули, що журнал не може бути налаштований у .htaccessфайлах, це також виявилося проблемою версії Apache. Директива RewriteLog була замінена на новіші версії, і додавання наступного до конфігурації Virtualhost дозволило мені переписати журнал:

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

З посібника:

Ті, хто знайомий з більш ранніми версіями mod_rewrite, без сумніву, шукатимуть директиви RewriteLog та RewriteLogLevel. Ця функціональність була повністю замінена новою конфігурацією реєстрації кожного модуля, згаданою вище.

Щоб відфільтрувати ці повідомлення в журналі помилок, ви можете зробити щось на кшталт:

tail -f error_log|fgrep '[rewrite:'

Ваше запитання спочатку було позначено апаче-2.2, правда? і, можливо, я ігнорував версію в самому питанні. Добре помічений.
HBruijn

Якщо це допомагає комусь, моя проблема полягала в тому, що я дозволяв здійснювати вхід у VHost для порту 80, але не 443. Я використовував HTTPS, тому моє ведення журналу не працювало. Зайняв мене час, щоб знайти
тую

Я хотів би додати, що ви повинні mod_log_debugвключити ...
thoni56

4

Я не можу не повторити себе:

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

Ви повинні уникати використання файлів .htaccess повністю, якщо у вас є доступ до конфігураційного файлу основного сервера httpd. Використання .htaccessфайлів уповільнює ваш http-сервер Apache. Будь-яку директиву, яку ви можете включити у файл .htaccess, краще встановити у блоці каталогу, оскільки це матиме такий же ефект при кращій продуктивності.
Джерело: Посібник Apache

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

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

Це означає, що він не дозволений у .htaccessфайлі!


4
Шукати журнали - це саме те, що робив би той, хто хоче вчитися, а не копіювати. Здається, Apache створив класичний улов-22: Ви повинні використовувати .htaccess, лише якщо ви не можете отримати доступ до кореня сервера. Але ви можете включити тільки ведення журналу , якщо ви можете отримати доступ до кореневого сервера. Якщо вони дозволять вам робити все це переписування в .htaccess, вони повинні дозволити вам записати, що це робиться, щоб вам не довелося покладатися на випадкову копію та вставлення / пробу та помилку.
Марк Беррі

5
Деякі програми, такі як Wordpress, генерують файли .htaccess, які потрібно налагодити. Це, мабуть, так і тут. Реєстрація з файлу .htaccess - це перший логічний крок, коли ви намагаєтеся розробити чужі непереборні регулярні вирази.
KeithL
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.