Activation de mod_rewrite sur Amazon Linux

9

J'essaie d'activer mod_rewrite sur une instance Amazon Linux. Mes directives d'annuaire ressemblent à ceci:

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

Et puis plus bas dans httpd.conf j'ai la LoadModuledirective:

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

J'ai commenté tous les modules Apache dont Wordpress n'a pas besoin.

Toujours quand j'émets le redémarrage http et vérifie ensuite les modules chargés avec /usr/sbin/httpd -lj'obtiens seulement:

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

À l'intérieur de l'hôte virtuel contenant le site Wordpress, j'ai un .htaccesscontenant:

# 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

Le .htaccess appartient à apache qui est l'utilisateur sous lequel apache s'exécute. La apachectl -tcommande retourneSyntax OK

Mon /etc/httpd/conf.d/vhosts.confressemble à ceci:

<VirtualHost *:80>
     ServerAdmin [email protected]
     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>

Qu'est-ce que je fais mal? Que dois-je vérifier?

Lorenzo
la source

Réponses:

5

La directive LoadModule chargera un module dynamiquement.

Essayez d'émettre RewriteEngine ondans un hôte virtuel suivi de apachectl -tpour confirmer la météo ou non, le module est réellement chargé.

James Park-Watt
la source
Salut James, merci pour la réponse J'ai ajouté plus de détails à la question concernant ce que vous avez souligné. RewriteEngine est activé et apachectl -t renvoie la syntaxe OK mais ne fonctionne toujours pas.
Lorenzo
Désolé d'avoir supprimé mon dernier commentaire, c'était faux. Vous l'avez pris dans le fichier wordpress .htaccess, n'est-ce pas? Avez-vous AllowOverride tous activés dans votre configuration VHost?
James Park-Watt
Salut James, oui je l'ai pris de WP. Oui, le AllowOverride dans les sous-répertoires de mon DocumentRoot est réglé sur All
Lorenzo
Veuillez essayer ceci: dans la configuration du serveur - pas .htaccess ajoutez les lignes RewriteEngine Onet RewriteRule ^.*$ http://www.wordpress.org/ [R]pour confirmer si la réécriture fonctionne du tout. Il devrait transmettre tout le trafic vers le site Web Wordpress.
James Park-Watt
J'ai supprimé le .htaccess de WP et ai fait les changements que vous avez suggérés mais cela ne fonctionne pas.
Lorenzo
5

Je viens de commencer un nouveau Linux amazon et j'ai eu le même problème et Options FollowSymLinkil y en avait mais la ligne suivante AllowOverride Nonea dû être changée enAllowOverride All

Adrian
la source
3

Ma configuration était correcte mais j'avais besoin

Options FollowSymLink

dans ma déclaration DocumentRoot dans httpd.conf pour que mod_rewrite fonctionne.

Lorenzo
la source
1

J'ai trouvé la solution à ce problème .....

J'ai changé AllowOverride Nonepour AllowOverride all, ci-dessous Options Indexes FollowSymLinksdans le fichier de configuration/etc/httpd/conf/httpd.conf

Merci!

Vatsal Shah
la source