Devi riavviare Apache per rendere effettive le regole di riscrittura nel file .htaccess?


Risposte:


93

Non è necessario riavviare per le modifiche a .htaccess. Qualcos'altro non va.

Assicurati che il tuo .htaccess includa la dichiarazione

RewriteEngine su

che è richiesto anche se è presente anche in httpd.conf. Controlla anche che .htaccess sia leggibile dal processo httpd.
Controlla l'errore_log: ti informerà di eventuali errori in .htaccess se viene utilizzato. Mettere un errore di sintassi intenzionale in .htaccess è un buon controllo per assicurarsi che il file sia in uso: dovresti ricevere un errore 500 su qualsiasi pagina della stessa directory.

Infine, puoi abilitare un registro di riscrittura usando comandi come i seguenti nel tuo httpd.conf:

RewriteLog "logs / rewritelog"

RewriteLogLevel 7

Il file di registro così generato ti darà i dettagli cruenti di quali regole di riscrittura corrispondono e come sono state gestite.


3
Questo è un po 'datato. Mi sono imbattuto in un problema simile e volevo eseguire il debug delle mie riscritture per un particolare caso d'uso. Ho provato questo metodo, ma dopo un po 'di frustrazione e scavando, ho capito qual era il problema. Questo è per le versioni precedenti di Apache. Per apache2.4> sostituire il RewriteLog & LogLevel sopra con: LogLevel alert rewrite:trace7. Dopo aver riavviato Apache , dovresti vedere le tracce nel error.log Hope that help. http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
Casper Wilkes

52

No :

Apache consente la gestione decentralizzata della configurazione tramite file speciali posizionati all'interno dell'albero web. I file speciali vengono solitamente chiamati .htaccess, ma qualsiasi nome può essere specificato nella direttiva AccessFileName ... Poiché i file .htaccess vengono letti ad ogni richiesta, le modifiche apportate a questi file hanno effetto immediato ...


Se hai aggiunto il nome utente a "Richiedi utente" nel file abilitato per i siti, ho riscontrato empiricamente che hai bisogno di un riavvio. Uno grazioso lo fa.
Ross

18

Dalla documentazione di Apache: più comunemente, il problema è che AllowOverride non è impostato in modo tale che le direttive di configurazione vengano rispettate. Assicurati di non avere un AllowOverride Nessuno attivo per l'ambito del file in questione. Un buon test per questo è mettere spazzatura nel tuo file .htaccess e ricaricarlo. Se non viene generato un errore del server, quasi sicuramente hai attivato AllowOverride None.


1
Eliminazione del collegamento ad Apache - AllowOverride: httpd.apache.org/docs/2.2/mod/core.html#AllowOverride
scunliffe

2
Aggiungo questa riga "<directory /> </directory>" al mio .htaccess per generare un errore nel log. Dirà "<Directory non consentita qui" e so che sta leggendo il mio file.
Mnebuerquo

3

Solo se si è non è aggiunto il modulo mod_rewrite di Apache.

È necessario riavviare Apache solo se si modificano i file ".conf" di Apache.


2

Ho lo stesso problema e sembra che il post di PiedPiper su AllowOverride sia stato di grande aiuto. Controlla il tuo file httpd.conf per "AllowOverride" e assicurati che sia impostato su All.



2

In caso di .htaccess il riavvio non è richiesto se non funziona le probabili ragioni includono.

  • AllowOverride Potrebbe non essere impostato quale utente può impostare all'interno di httpd.conf o potrebbe dover contattare l'amministratore del server.

  • Controlla il nome del file .htaccess dovrebbe essere .htaccess non htaccess.txt vedi qui per la guida su come crearne uno.

  • Prova a usare Options -Indexeso deny alltipo di semplice direttiva per vedere se funziona o no.

  • svuota la cache del browser ogni volta se hai una regola per i reindirizzamenti o simili se il reindirizzamento precedente è memorizzato nella cache sembra che le cose non funzionino.


0

Cosa c'è nel tuo .htaccess? RewriteRules? Verifica che mod_rewrite sia installato e abilitato.

Altre cose? Prova a impostare AllowOverride su "all" in quella directory.

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.