Habilitar mod_rewrite en Amazon Linux

9

Estoy tratando de habilitar mod_rewrite en una instancia de Amazon Linux. Las directivas de Mi directorio se ven así:

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

Y luego más abajo en httpd.conf tengo la LoadModuledirectiva:

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

He comentado todos los módulos de Apache que Wordpress no necesita.

Aún así, cuando emito el reinicio http y luego verifico los módulos cargados con /usr/sbin/httpd -l, solo obtengo:

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

Dentro del host virtual que contiene el sitio de Wordpress tengo un que .htaccesscontiene:

# 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

El .htaccess es propiedad de apache, que es el usuario con el que se ejecuta apache. El apachectl -tcomando regresaSyntax OK

Mi /etc/httpd/conf.d/vhosts.confaspecto es este:

<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é estoy haciendo mal? ¿Qué debo verificar?

Lorenzo
fuente

Respuestas:

5

La directiva LoadModule cargará un módulo dinámicamente.

Intente emitir RewriteEngine onen un host virtual seguido de apachectl -tpara confirmar el clima o no el módulo está realmente cargado.

James Park-Watt
fuente
Hola James, gracias por la respuesta. Agregué más detalles a la pregunta sobre lo que has señalado. RewriteEngine está activado y apachectl -t devuelve Syntax OK pero aún no funciona.
Lorenzo
Lo siento, eliminé mi último comentario, estaba equivocado. Has tomado esto del archivo wordpress .htaccess, ¿no? ¿Tiene EnableOverride todo habilitado en su configuración de VHost?
James Park-Watt
Hola James, sí, lo tomé de WP. Sí, AllowOverride en los subdirectorios de mi DocumentRoot está establecido en Todos
Lorenzo
Intente esto: en la configuración del servidor, no en .htaccess, agregue las líneas RewriteEngine Ony RewriteRule ^.*$ http://www.wordpress.org/ [R]confirme si la reescritura está funcionando. Debe pasar todo el tráfico al sitio web de Wordpress.
James Park-Watt
Eliminé el .htaccess de WP e hice los cambios que sugirió, pero no funciona.
Lorenzo
5

Acabo de comenzar un nuevo Linux de Amazon y tuve el mismo problema y Options FollowSymLinkestaban allí, pero la siguiente línea AllowOverride Nonetuvo que cambiarse aAllowOverride All

Adrian
fuente
3

Mi configuración era correcta pero necesitaba

Options FollowSymLink

en la declaración de mi DocumentRoot en httpd.conf para que mod_rewrite funcione.

Lorenzo
fuente
1

Tengo la solución para este problema .....

He cambiado AllowOverride Nonea AllowOverride all, a continuación Options Indexes FollowSymLinksen el archivo de configuración/etc/httpd/conf/httpd.conf

¡Gracias!

Vatsal Shah
fuente