Come eseguire il debug .htaccess RewriteRule non funziona

Ho una RewriteRule in un file .htaccess che non sta facendo nulla. Come posso risolvere questo?

  • Come posso verificare se il file .htaccess viene persino letto e rispettato da Apache? Posso scrivere un messaggio di eco “sta funzionando”, se lo scrivo, dove verrebbe echeggiata quella linea?
  • Se il file .htaccess non viene utilizzato, come posso far sì che Apache lo usi?
  • Se il .htaccess è in uso ma il mio RewriteRule continua a non avere alcun effetto, cosa posso fare di più per eseguire il debug?

Inserisci qualche valore indesiderato nella tua .htaccess ad esempio, foo bar , sakjnaskljdnas qualsiasi parola chiave non riconosciuta da htaccess e visita il tuo URL. Se funziona, dovresti ottenere un

500 Errore interno del server

Errore interno del server

Il server ha riscontrato un errore interno o una configurazione errata e non è stato in grado di completare la richiesta ….

Ti suggerisco di metterlo subito dopo RewriteEngine on .


Dato che sei sulla tua macchina. Presumo che tu abbia accesso al file .conf apache.

apri il file .conf e cerca una riga simile a:

 LoadModule rewrite_module modules/mod_rewrite.so 

Se è commentato (#), decommentare e riavviare apache.


Per registrare la riscrittura

 RewriteEngine On RewriteLog "/path/to/rewrite.log" RewriteLogLevel 9 

Metti le 3 linee sopra nel tuo virtualhost . riavviare l’httpd.

RewriteLogLevel 9 utilizzo di un valore elevato per Level rallenterà notevolmente il server Apache! Utilizzare il file di registrazione di riscrittura a un livello superiore a 2 solo per il debug! Il livello 9 registrerà quasi tutti i dettagli di rewritelog.


AGGIORNARE

Le cose sono cambiate in Apache 2.4:

Da Aggiornamento a 2.4 da 2.2

Le direttive RewriteLog e RewriteLogLevel sono state rimosse. Questa funzionalità è ora fornita configurando il livello appropriato di registrazione per il modulo mod_rewrite utilizzando la direttiva LogLevel . Vedi anche la sezione logging mod_rewrite.

Per ulteriori informazioni su LogLevel, consultare la direttiva LogLevel

puoi realizzare

 RewriteLog "/path/to/rewrite.log" 

in questo modo ora

 LogLevel debug rewrite_module:debug 

La risposta “Inserisci un po ‘di valore spazzatura” non ha funzionato per me, il mio sito continuava a caricare nonostante la spazzatura immessa.

Invece ho aggiunto la seguente riga all’inizio del file .htaccess:

 deny from all 

Questo ti farà sapere rapidamente se .htaccess viene prelevato o meno. Se si utilizza il file .htaccess, i file in quella cartella non verranno caricati affatto.

Generalmente qualsiasi cambiamento nel .htaccess dovrebbe avere effetti visibili. Se nessun effetto, controlla i tuoi file di configurazione Apache, qualcosa del tipo:

  ... AllowOverride None ...  

Dovrebbe essere cambiato in

 AllowOverride All 

E sarai in grado di cambiare le direttive nei file .htaccess.

Forse un metodo più logico sarebbe quello di creare un file (ad es. Test.html), aggiungere del contenuto e quindi provare a impostarlo come pagina di indice:

 DirectoryIndex test.html 

Per la maggior parte, la regola .htaccess sovrascriverà la configurazione di Apache dove lavora a livello di directory / file

Se hai accesso alla directory apache bin puoi usare,

httpd -M per controllare prima i moduli caricati.

  info_module (shared) isapi_module (shared) log_config_module (shared) cache_disk_module (shared) mime_module (shared) negotiation_module (shared) proxy_module (shared) proxy_ajp_module (shared) rewrite_module (shared) setenvif_module (shared) socache_shmcb_module (shared) ssl_module (shared) status_module (shared) version_module (shared) php5_module (shared) 

Dopo che le semplici direttive come Options -Indexes o deny from all Options -Indexes che .htaccess funziona correttamente.

Perché non inserire del junk nel tuo file .htaccess e provare a ricaricare Apache. Se Apache non si avvia, sai che funziona. Rimuovi la posta indesiderata quindi ricarica apache se carica congrats configurati correttamente .htaccess.

Per testare le tue regole di riscrittura htaccess, inserisci semplicemente l’url a cui stai applicando le regole, posiziona il contenuto del tuo htaccess nell’area di input più grande e premi il pulsante “Test”.

http://htaccess.mwl.be/