mod-rewrite enable - Come abilitare mod_rewrite per Apache 2.2




url rewriterule (14)

<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.

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?


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


La prima volta che ho lottato con le regole mod_rewrite ignorando il mio traffico, ho appreso (frustrato) che li avevo posizionati nel <VirtualHost> sbagliato, il che significava che il mio traffico li avrebbe ignorati tutti , non importa quanto fossero ben scritti. Assicurati che questo non ti stia succedendo:

# Change the log location to suit your system. RewriteLog /var/log/apache-rw.log RewriteLogLevel 2

Questi parametri si attiveranno se si esegue un riavvio aggraziato di Apache, quindi è possibile riciclarli e monitorare attentamente il comportamento mod_rewrite. Una volta risolto il problema, riattiva RewriteLogLevel e festeggia.

Nel 100% della mia esperienza, ho scoperto che il RewriteLog mi ha aiutato a scoprire il problema con le mie regole di riscrittura. Non posso raccomandarlo abbastanza Buona fortuna nella risoluzione dei problemi!

Inoltre, questo segnalibro è il tuo migliore amico: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritelog


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.


In Ubuntu:

Correre:

a2enmod rewrite

e poi:

service apache2 restart

mod_rewrite sarà ora abilitato!




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.


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

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!


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.


Per usare mod_rewrite puoi digitare il seguente comando nel terminale:

sudo a2enmod rewrite

Riavvia apache2 dopo

sudo /etc/init.d/apache2 restart

o

sudo service apache2 restart

o secondo la nuova modalità di controllo del sistema unificata

sudo systemctl restart apache2

Quindi, se lo desideri, puoi utilizzare il seguente file .htaccess .

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

Il file .htaccess sopra riportato (se inserito nella DocumentRoot ) reindirizzerà tutto il traffico verso un file index.php in DocumentRoot meno che il file non esista.

Supponiamo che tu abbia la seguente struttura di directory e httpdocs sia DocumentRoot

httpdocs/
    .htaccess
    index.php
    images/
        hello.png
    js/
        jquery.js
    css/
        style.css
includes/
    app/
        app.php

Qualsiasi file esistente in httpdocs verrà servito al richiedente utilizzando l' .htaccess mostrato sopra, tuttavia, tutto il resto verrà reindirizzato a httpdocs/index.php . I file dell'applicazione in includes/app non saranno accessibili.


Ci sono molti modi in cui puoi risolvere questo problema, se conosci la radice del problema.

Problema 1

In primo luogo, potrebbe essere un problema con il tuo apache che non ha il modulo mod_rewrite.c installato o abilitato.

Per questo motivo, dovresti abilitarlo come segue

  1. Apri la tua console e digita in essa, questo:

    sudo a2enmod rewrite

  2. Riavvia il tuo server Apache.

    service apache2 restart

Problema 2

  1. È inoltre possibile, in aggiunta a quanto sopra, se non funziona, modificare la regola di sovrascrittura dal file di configurazione di apache (apache2.conf, http.conf o file di default 000).

  2. Individua "Directory / var / www /"

  3. Modifica "Ignora Nessuno" su "Sostituisci tutto"

Problema 3

Se si verifica un errore che indica che il modulo di riscrittura non è stato trovato, probabilmente il proprio modulo userdir non è abilitato. Per questo motivo è necessario abilitarlo.

  1. Digita questo nella console:

    sudo a2enmod userdir

  2. Quindi prova a abilitare il modulo di riscrittura se ancora non abilitato (come menzionato sopra).

Per leggere ulteriori informazioni su questo, è possibile visitare questo sito: http://seventhsoulmountain.blogspot.com/2014/02/wordpress-permalink-ubuntu-problem-solutions.html


capito ... a quanto pare posso fare questo:

SSLProxyEngine On
RequestHeader set Front-End-Https "On"
ProxyPass / https://win.acme.com/
ProxyPassReverse / https://win.acme.com/
CacheDisable *

e funziona bene!

[la soluzione è arrivata dal post di mikeg su 3cx.org]





apache mod-rewrite