Назад | Перейти на главную страницу

Amazon EC2 .htaccess и ошибка 500

у меня есть Amazon EC2 (amzn-ami-pv-2013.09.0.x86_64-ebs (ami-149f7863)) на котором я установил Apache, PHP и MySQL.

Все работает нормально, пока не попробую активировать .htaccess.

я меняю AllOverride All в http.conf и перезапустите службу Apache.

Когда я добавляю .htaccess файл я получаю 500 Internal Server Error даже если htaccess недействителен.

Модуль mod_rewrite.so загружен

Если я удалю htaccess, все будет нормально.

Что я делаю не так?

- ОТРЕДАКТИРОВАН -

Это содержимое .htaccess

RewriteEngine On
Options +FollowSymlinks
RewriteBase /

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

Но даже если я оставил файл htaccess без содержимого, он вернет ошибку 500.

Определение виртуального хоста следующее:

<VirtualHost *:80>
    ServerAdmin webmaster@mywebsite.com
    DocumentRoot /var/www/html/mywebsite.com
    ServerName mywebsite.com
</VirtualHost>

- ОБНОВЛЕНО-2-

Извините, но я решил эту проблему, только создав файл .htaccess из командной строки. Теперь это работает. Спасибо тебе за помощь.

--END-РЕДАКТИРОВАНИЕ--

Спасибо

Что говорит ваш журнал ошибок Apache? Ваш сайт загружается без .htaccess на месте, правильно?

По моему опыту, когда ошибка 500 связана с .htaccess это может быть что-то простое, как .htaccess сам файл изменяется в файловой системе. Я бы рекомендовал удалить сам файл и создать новый .htaccess. Если по-прежнему отображается ошибка 500, пройдите через .htaccess построчно комментируя каждую строку и перезагружая страницу. Скорее всего, что-то странное есть хотя бы в одной строке, и это покажет это.

РЕДАКТИРОВАТЬ: Я присмотрелся к твоему .htaccess контент, так как вы его добавили и думаю, что я заметил проблему. Измените его так:

Options +FollowSymlinks

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

Похоже, что ваше форматирование RewriteCond задохнется. Кроме того, я настроил его так, чтобы он читался в человеческой форме:

Если этот запрос не к www.mywebsite.com затем перенаправить на www.mywebsite.com.

Таким образом, вы явно захватываете все, что есть не www.mywebsite.com и отправив их в соответствующий домен.

Кроме того, в вашей конфигурации Apache я бы рекомендовал ServerAlias для учета www.mywebsite.com. Похоже, вы используете NameVirtualHost так что имя основного сервера будет www.mywebsite.com с псевдонимом mywebsite.com имеет смысл.

<VirtualHost *:80>
    ServerAdmin webmaster@mywebsite.com
    ServerName www.mywebsite.com
    ServerAlias mywebsite.com
    DocumentRoot /var/www/html/mywebsite.com
</VirtualHost>

Трудно ответить на ваш вопрос как таковой; как вы предлагаете, .htaccess сам файл не должен заставлять ваш сервер возвращать ошибки. Это означает, что это, вероятно, то, что вы записали в этот файл, или, возможно, комбинация с настройками apache.

Предлагаю вам поделиться VirtualHost определение и содержание .htaccess tat вызывает ошибку 500.

Я также предлагаю вам изучить журналы apache, при необходимости скорректировав конфигурацию, чтобы получить достаточно подробные журналы, чтобы понять вашу проблему.

На первый взгляд, я бы предположил, что уродливый Переписать правило, так как это довольно легко сделать.