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.