Abilitazione mod_rewrite su Amazon Linux


9

Sto cercando di abilitare mod_rewrite su un'istanza di Amazon Linux. Le direttive della mia directory sono simili alle seguenti:

<Directory />
    Order deny,allow
    Allow from all
    Options None
    AllowOverride None
</Directory>

<Directory "/var/www/vhosts">
    Order allow,deny
    Allow from all
    Options None
    AllowOverride All
</Directory>

E poi più in basso in httpd.conf ho la LoadModuledirettiva:

... other modules...
#LoadModule substitute_module modules/mod_substitute.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule proxy_module modules/mod_proxy.so
... other modules...

Ho commentato tutti i moduli Apache non necessari per Wordpress.

Ancora quando emetto il riavvio http e quindi controllo i moduli caricati con /usr/sbin/httpd -lottengo solo:

[root@foobar]# /usr/sbin/httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

All'interno dell'host virtuale contenente il sito Wordpress ho un .htaccesscontenente:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

.Htaccess è di proprietà di apache, ovvero l'utente in cui viene eseguito apache. Il apachectl -tcomando ritornaSyntax OK

Il mio /etc/httpd/conf.d/vhosts.confassomiglia a questo:

<VirtualHost *:80>
     ServerAdmin foobar@gmail.com
     ServerName foobar.net
     ServerAlias www.foobar.net
     DocumentRoot /var/www/vhosts/foobar/
     ErrorLog /var/www/vhosts/foobar/logs/error.log
     CustomLog /var/www/vhosts/foobar/logs/access.log combined
</VirtualHost>

Che cosa sto facendo di sbagliato? Cosa devo controllare?

Risposte:


5

La direttiva LoadModule caricherà un modulo in modo dinamico.

Prova a emettere RewriteEngine onin un host virtuale seguito da apachectl -tper confermare il tempo o meno il modulo è effettivamente caricato.


Ciao James, grazie per la risposta, ho aggiunto maggiori dettagli alla domanda su ciò che hai sottolineato. RewriteEngine è attivo e apachectl -t restituisce la sintassi OK ma continua a non funzionare.
Lorenzo,

Scusa se ho cancellato il mio ultimo commento era sbagliato. Hai preso questo dal file .htaccess di wordpress, vero? Hai AllowOverride tutto abilitato nella tua configurazione VHost?
James Park-Watt,

Ciao James, sì, l'ho preso da WP. Sì, AllowOverride nelle sottodirectory di DocumentRoot è impostato su Tutto
Lorenzo,

Prova questo: nella configurazione del server - non .htaccess aggiungi le righe RewriteEngine One RewriteRule ^.*$ http://www.wordpress.org/ [R]per confermare se la riscrittura funziona affatto. Dovrebbe passare tutto il traffico al sito Web Wordpress.
James Park-Watt,

Ho eliminato .htaccess da WP e fatto le modifiche che hai suggerito, ma non funziona.
Lorenzo,

5

Ho appena avviato un nuovo Linux Amazon e ho avuto lo stesso problema e Options FollowSymLinkc'erano ma la riga successiva AllowOverride Nonedoveva essere cambiataAllowOverride All


3

La mia configurazione era corretta ma ne avevo bisogno

Options FollowSymLink

nella mia dichiarazione di DocumentRoot in httpd.conf affinché mod_rewrite funzioni.


1

Ho ottenuto la soluzione per questo problema .....

Ho cambiato AllowOverride Nonea AllowOverride all, di seguito Options Indexes FollowSymLinksnel file di configurazione/etc/httpd/conf/httpd.conf

Grazie!

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.