Come abilitare mod_rewrite in Apache?


165

Ho appena installato lo stack LAMP sul mio sistema Ubuntu.

Il reindirizzamento non funziona per me. Non so come ripararlo. Qualcuno può aiutarmi?


3
IMHO questa domanda non è specifica di Ubuntu e dovrebbe essere migrata a Server Fault .
Paolo,

2
L'OP ha installato la lampada su UBUNTU. Quanto più specifico di Ubuntu vuoi?
Wojox,

1
@wojov: non conosco questo caso, ma tale argomento non funziona. "Come posso usare questa applicazione (su Ubuntu)?" sono per lo più fuori tema.

23
Questo non è un "Come posso usare l'applicazione", ma un "come abilitare una funzione specifica in Ubuntu". Apache in Ubuntu utilizza un diverso layout di configurazione in cui ogni modulo e host virtuale è un file /etc/apache2e che può essere abilitato usando i a2*programmi.
Lekensteyn,

Si dovrebbe descrivere ciò che avete fatto per circoscrivere il problema, è
ericn

Risposte:


239

Per abilitarlo nel modulo di riscrittura, esegui "apache2 abilita la riscrittura del modulo":

sudo a2enmod rewrite

È necessario riavviare il server web per applicare le modifiche:

sudo service apache2 restart

Se prevedi di utilizzare mod_rewrite nei .htaccessfile, devi anche abilitare l'uso dei .htaccessfile cambiando AllowOverride Nonein AllowOverride FileInfo. Per il sito Web predefinito, modificare /etc/apache2/sites-available/default:

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            # changed from None to FileInfo
            AllowOverride FileInfo
            Order allow,deny
            allow from all
    </Directory>

Dopo tale modifica, è necessario riavviare nuovamente Apache.


18
Ho avuto più successo con AllowOverride All
Valentin Despa il

Grazie! sudo a2enmod rewritee FileInforiparato per me!
d -_- b

22
Per me quel file era /etc/apache2/apache2.conf dove ho trovato quella voce di configurazione
doc_id

Sì, apportare le due modifiche risolto il problema.
Adelin,

Non funziona per me. Ho pubblicato una domanda qui askubuntu.com/questions/809619/failing-to-rewrite-url
Suhail Gupta

49

Mi permetto di aggiungere una risposta speciale (come seguito alla grande risposta sopra) relativa a Ubuntu 14.04 e .htaccess:

In 14.04, il nome del file di configurazione predefinito è cambiato in 000-default.conf:

sudo gedit /etc/apache2/sites-available/000-default.conf

aggiungere quanto segue alla fine del file:

<Directory "/var/www/html">
    AllowOverride All
</Directory>

Per qualche ragione, in Ubuntu 14.04 e apache2 il root è impostato su /www/html. Se si desidera ripristinare la radice del server Web in vecchio /www, open 000-default.confe cambiare

DocumentRoot /var/www/html/

per

DocumentRoot /var/www/

e poi ovviamente dovrebbe essere

<Directory "/var/www">
    AllowOverride All
</Directory>

1
Grazie per informazioni! In questo / nuovo modo possiamo usare www come cartella in cui inseriamo tutti i siti Web e HTML è di default "sito Web" per localhost. Può essere importante se stai giocando con l'apertura delle porte al mondo, in questo modo il tuo localhost non può vedere le cartelle di altri progetti.
Vladimir Vukanac,

1
Non funziona per me. Sto usando Ubuntu 14.04.4 LTS
Suhail Gupta il
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.