Amazon EC2 .htaccess e erro 500

2

Eu tenho um Amazon EC2 (amzn-ami-pv-2013.09.0.x86_64-ebs (ami-149f7863)) no qual instalei Apache , PHP e MySQL .

Tudo funciona bem até que eu tente ativar .htaccess .

Altero AllOverride All em http.conf e reinicio o serviço Apache.

Quando eu adiciono o arquivo .htaccess eu recebo um 500 Internal Server Error mesmo se o htaccess for nulo.

módulo mod_rewrite.so é carregado

Se eu excluir o htaccess, tudo funciona bem.

O que estou fazendo de errado?

- EDITADO -

Este é o conteúdo do .htaccess

RewriteEngine On
Options +FollowSymlinks
RewriteBase /

RewriteCond %{HTTP_HOST} ^mywebsite.com
RewriteRule (.*) http://www.mywebsite.com/$1 [R=301,L]

Mas, mesmo que eu tenha deixado o arquivo htaccess sem conteúdo, ele retornará um erro 500.

A definição do virtualhost é a seguinte:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/mywebsite.com
    ServerName mywebsite.com
</VirtualHost>

- EDITADO-2 -

Desculpe, mas resolvi esse problema apenas criando o arquivo .htaccess na linha de comando. Agora funciona. Obrigado por me ajudar.

- END-EDITING -

Obrigado

    
por Luca 16.11.2013 / 19:23

2 respostas

1

O que seu log de erros do Apache diz? Seu site é carregado sem o .htaccess no lugar, correto?

Na minha experiência, quando um erro 500 é conectado a .htaccess , pode ser algo tão simples quanto o arquivo .htaccess em si, sendo mungado no sistema de arquivos. Eu recomendaria excluir o arquivo real e criar um novo .htaccess . Se isso ainda mostrar um erro 500, vá até a linha .htaccess por linha comentando cada linha e recarregue a página. As chances são de que há algo estranho em pelo menos uma linha e isso mostrará isso.

EDITAR: olhei mais de perto para o seu .htaccess conteúdo desde que você o adicionou & acho que vi o problema. Altere para ler da seguinte forma:

Options +FollowSymlinks

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.mywebsite\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.mywebsite.com/$1 [L,R=301]

Parece que sua formatação do RewriteCond seria sufocada. Além disso, eu ajustei a maneira que eu faria, que lê em forma humana:

If this request is not to www.mywebsite.com then redirect it to www.mywebsite.com.

Desta forma, você está claramente pegando tudo e qualquer coisa que não seja não www.mywebsite.com e enviando-os para o domínio adequado.

Além disso, na sua configuração do Apache, eu recomendaria um ServerAlias para a conta www.mywebsite.com . Parece que você está usando NameVirtualHost , portanto, ter o nome do servidor principal como www.mywebsite.com com um alias, sendo que mywebsite.com faz mais sentido.

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.mywebsite.com
    ServerAlias mywebsite.com
    DocumentRoot /var/www/html/mywebsite.com
</VirtualHost>
    
por 16.11.2013 / 21:43
0

É difícil responder à sua pergunta como tal; como você sugere, o arquivo .htaccess em si não deve fazer com que seu servidor retorne erros. Isso significa que provavelmente é o que você escreveu no arquivo, ou talvez a combinação com as configurações do apache.

Sugiro que você compartilhe a definição VirtualHost e o conteúdo de .htaccess tat causa o erro 500.

Também sugiro que você examine os logs do apache, ajustando a configuração, se necessário, para obter logs detalhados o suficiente para entender seu problema.

À primeira vista, eu acho que uma regra malfeita de ReWrite , como é bem fácil de fazer.

    
por 16.11.2013 / 19:47