у меня есть 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, при необходимости скорректировав конфигурацию, чтобы получить достаточно подробные журналы, чтобы понять вашу проблему.
На первый взгляд, я бы предположил, что уродливый Переписать правило, так как это довольно легко сделать.