rewriterule - ubuntu apache2 mod rewrite




Come abilitare mod_rewrite per Apache 2.2 (11)

Aprire il terminale e digitare a2enmod rewrite , abiliterà il modulo mod_rewrite per Apache.

Quindi vai su /etc/apache2/sites-available e modifica il file predefinito. (Per questo devi avere permessi scrivibili per questo file e cartella disponibile per i siti.)

Sostituisci sotto con le linee esistenti da 4 a 14

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

Ora riavvia il tuo apache da /etc/init.d/apache2 restart o /etc/init.d/apache2 restart service apache2 restart

Prendi di nuovo pulito il test URL e questa volta verrà passato.

Ho una nuova installazione di Apache 2.2 sulla mia macchina Vista, tutto funziona bene, tranne la riscrittura mod.

Ho commentato

LoadModule rewrite_module modules/mod_rewrite.s

ma nessuna delle mie regole di riscrittura funziona, anche quelle semplici come

RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404

Tutte le regole che sto usando funzionano sul mio hosting, quindi dovrebbero essere ok, quindi la mia domanda è, c'è qualche cosa nascosta nella configurazione di Apache, che potrebbe bloccare la riscrittura mod?


C'è ovviamente più di un modo per farlo, ma suggerirei di usare lo standard più:

ErrorDocument 404 /index.php?page=404

Consiglio vivamente a tutti coloro che desiderano abilitare le direttive mod_rewrite nei file .htacces per utilizzare AllowOverride FileInfo invece di consentire tutto, poiché TUTTE le risposte in questa pagina suggeriscono. Triste vedere tutte queste risposte prendere l'approccio che va avanti così come funziona, invece di cercare di capire le conseguenze della "soluzione" proposta. Cerca di capire cosa stai facendo sul tuo server e come limitare i privilegi che hai appena distribuito con AllowOverride All . RTFM! , è abbastanza chiaro sull'argomento. Vieni ragazzi, non è rocketscience, è solo un server web!


Cosa ha funzionato per me (in ubuntu):

sudo service apache2 restart

Inoltre, come già accennato, assicurati che AllowOverride all sia impostato nella sezione pertinente di /etc/apache2/sites-available/default


L'ho appena fatto

sudo a2enmod rewrite

allora devi riavviare il servizio Apache seguendo il comando

sudo service apache2 restart

La nuova versione di apache ha dei cambiamenti in qualche modo. Se la tua versione di apache è 2.4, devi andare in /etc/apache2/ . Ci sarà un file chiamato apache2.conf . Devi modificarlo (dovresti avere i permessi di root). Cambia il testo della directory come questo

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Ora riavvia apache.

service apache2 reload

Spero funzioni.



Per la mia situazione, ho avuto

RewriteEngine On

nel mio .htaccess , insieme al modulo in fase di caricamento, e non funzionava.

La soluzione al mio problema era di modificare la mia voce vhost in inlcude

AllowOverride all

nella sezione <Directory> per il sito in questione.


Se non funziona, prova a modificare / etc / apache2 / sites-enabled / 000-default

quasi in cima troverai

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

Modificare AllowOverride None su AllowOverride All

questo ha funzionato per me


Usa il comando qui sotto

sudo su
cd /etc/apache2/mods-enabled
ln ../mods-available/rewrite.load rewrite.load

E il riavvio apache attraverso il comando di sotto

sudo a2enmod rewrite

<modifica>

Appena notato hai detto mod_rewrite.s invece di mod_rewrite.so - spero che sia un refuso nella tua domanda e non nel file httpd.conf! :)

</ Modifica>

Sono più abituato ad usare Apache su Linux, ma l'altro giorno ho dovuto farlo.

Innanzitutto, dai un'occhiata alla directory di installazione di Apache. (Suppongo che tu l'abbia installato su "C: \ Programmi" qui)

Dai uno sguardo alla cartella: "C: \ Programmi \ Apache Software Foundation \ Apache2.2 \ modules" e assicurati che ci sia un file chiamato mod_rewrite.so. (Dovrebbe essere, è fornito come parte dell'installazione predefinita.

Quindi, aprire "C: \ Programmi \ Apache Software Foundation \ Apache2.2 \ conf" e aprire httpd.conf. Assicurati che la linea:

#LoadModule rewrite_module modules/mod_rewrite.so

è senza commento:

LoadModule rewrite_module modules/mod_rewrite.so

Inoltre, se si desidera abilitare RewriteEngine per impostazione predefinita, è possibile aggiungere qualcosa di simile

<IfModule mod_rewrite>
    RewriteEngine On
</IfModule>

alla fine del tuo file httpd.conf.

In caso contrario, assicurati di specificare

RewriteEngine On

da qualche parte nel tuo file .htaccess.