Ho una RewriteRule
in un file .htaccess
che non sta facendo nulla. Come posso risolvere questo?
.htaccess
viene persino letto e rispettato da Apache? Posso scrivere un messaggio di eco “sta funzionando”, se lo scrivo, dove verrebbe echeggiata quella linea? .htaccess
non viene utilizzato, come posso far sì che Apache lo usi? .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.
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”.