Perché l'abilitazione del registro di riscrittura in .htaccess non funziona?


9

Voglio abilitare la registrazione di riscrittura in modo da poter eseguire il debug di una regola di riscrittura ma l'aggiunta delle direttive RewriteLog sta causando un errore 500.

Informazioni sulla versione:

Ubuntu 14.04

Server version: Apache/2.4.12 (Ubuntu)
Server built:   Feb  4 2015 14:22:06

contenuti di .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>

Nel registro degli errori vedo:

/var/www/path.to/wordpress/.htaccess: Invalid command 'RewriteLog', perhaps misspelled or defined by a module not included in the server configuration

Risposte:


14

Oltre a aver dimenticato che la registrazione non può essere configurata in .htaccessfile, anche questo si è rivelato essere un problema di versione di Apache. La direttiva RewriteLog è stata sostituita nelle versioni più recenti e l'aggiunta di quanto segue alla configurazione di Virtualhost ha abilitato il registro di riscrittura per me:

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

Dal manuale:

Chi ha familiarità con le versioni precedenti di mod_rewrite cercherà senza dubbio le direttive RewriteLog e RewriteLogLevel. Questa funzionalità è stata completamente sostituita dalla nuova configurazione di registrazione per modulo menzionata sopra.

Per filtrare questi messaggi nel registro degli errori puoi fare qualcosa del tipo:

tail -f error_log|fgrep '[rewrite:'

La tua domanda è stata originariamente taggata con apache-2.2 giusto? e potrei aver trascurato la versione nella domanda stessa. Ben individuato.
HBruijn,

Nel caso in cui ciò aiuti qualcuno, il mio problema era che stavo abilitando la registrazione in VHost per la porta 80 ma non 443. Stavo usando HTTPS, quindi la mia registrazione non funzionava. Mi ci è
voluto

Vorrei aggiungere che devi aver mod_log_debugabilitato ...
thoni56

4

Non posso fare a meno di ripetermi:

La maggior parte delle persone che usano .htaccess e chiedono informazioni su ServerFault non dovrebbero usare .htaccess in primo luogo poiché si tratta di una soluzione per l'utente finale mai pensata per gli amministratori:

Dovresti evitare di utilizzare completamente i file .htaccess se hai accesso al file di configurazione del server principale httpd. L'uso dei .htaccessfile rallenta il tuo server http Apache. Qualsiasi direttiva che è possibile includere in un file .htaccess è meglio impostata in un blocco Directory, poiché avrà lo stesso effetto con prestazioni migliori.
Fonte: manuale di Apache

Apparentemente la maggior parte delle persone che pubblicano le proprie configurazioni sembrano essere programmatori cult di culto desiderosi di copiare i file .htaccess alla cieca senza comprenderne le ragioni.

Il tuo problema è un primo esempio: la RewriteLogdirettiva è valida solo nel contesto di una configurazione del server o dell'host virtuale ...

Ciò significa che non è consentito in un .htaccessfile!


4
La ricerca dei registri è esattamente ciò che farebbe una persona che vuole imparare, non copiare. Sembra che Apache abbia impostato un classico catch-22: dovresti usare .htaccess solo se non riesci ad accedere al root del server. Ma è possibile attivare la registrazione solo se è possibile accedere alla radice del server. Se ti permettono di fare tutta questa riscrittura in .htaccess, dovrebbero lasciarti registrare ciò che sta facendo in modo da non dover fare affidamento su copia e incolla / prova ed errori casuali.
Mark Berry,

5
Alcune applicazioni come Wordpress generano file .htaccess che devono essere sottoposti a debug. Questo sembra essere il caso qui. La registrazione da un file .htaccess è un primo passo logico quando si cerca di elaborare espressioni regolari imperscrutabili di qualcun altro.
KeithL
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.