Habilitando o mod_rewrite no Amazon Linux

9

Estou tentando ativar o mod_rewrite em uma instância do Amazon Linux. As diretivas do Meu Diretório são assim:

<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 depois no httpd.conf eu tenho a LoadModulediretiva:

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

Eu comentei todos os módulos do Apache não necessários pelo Wordpress.

Ainda assim, quando eu emitir o http restart, e depois verificar os módulos carregados, /usr/sbin/httpd -lrecebo apenas:

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

Dentro do host virtual que contém o site do Wordpress, eu tenho um .htaccesscontendo:

# 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

O .htaccess pertence ao apache, no qual o usuário apache é executado. O apachectl -tcomando retornaSyntax OK

Minha /etc/httpd/conf.d/vhosts.confaparência é assim:

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

O que estou fazendo errado? O que devo verificar?

Lorenzo
fonte

Respostas:

5

A diretiva LoadModule carregará um módulo dinamicamente.

Tente emitir RewriteEngine onem um host virtual seguido por apachectl -tpara confirmar se o clima está ou não carregado.

James Park-Watt
fonte
Olá James, obrigado pela resposta. Adicionei mais detalhes à pergunta sobre o que você apontou. RewriteEngine está ativado e o apachectl -t retorna a sintaxe OK, mas ainda não funciona.
Lorenzo
Desculpe, eu apaguei meu último comentário, estava errado. Você tirou isso do arquivo .htaccess do wordpress, não é? Você tem o AllowOverride ativado na sua configuração do VHost?
James Park-Watt
Oi James, sim, eu peguei no WP. Sim, o AllowOverride nos subdiretórios do meu DocumentRoot está definido como All
Lorenzo
Por favor, tente o seguinte: Na configuração do servidor - não .htaccess adicione as linhas RewriteEngine One RewriteRule ^.*$ http://www.wordpress.org/ [R]confirme se a reescrita está funcionando. Deve passar todo o tráfego para o site do Wordpress.
James Park-Watt
Excluí o .htaccess do WP e fiz as alterações que você sugeriu, mas ele não funciona.
Lorenzo
5

Acabei de iniciar um novo linux da amazon e tive o mesmo problema e eles Options FollowSymLinkestavam lá, mas a próxima linha AllowOverride Noneteve que ser alterada paraAllowOverride All

Adrian
fonte
3

Minha configuração estava correta, mas eu precisava

Options FollowSymLink

na declaração do meu DocumentRoot em httpd.conf para que mod_rewrite funcione.

Lorenzo
fonte
1

Eu tenho a solução para este problema .....

Mudei AllowOverride Nonepara AllowOverride all, abaixo Options Indexes FollowSymLinksno arquivo de configuração/etc/httpd/conf/httpd.conf

Obrigado!

Vatsal Shah
fonte