500 Внутренняя ошибка сервера при использовании .htaccess с RewriteEngine
Я нахожусь на общем хосте Bounceweb, и я пытаюсь добавить некоторые правила перезаписи, чтобы мои ссылки выглядели красивее.
Одно из этих правил состоит в том, чтобы сделать url: http://mysite.com/upload
указывать на: http://mysite.com/upload.php
. У меня это в файле .htaccess:
RewriteEngine on
RewriteRule ^upload$ upload.php
но все, что он мне дает, - это внутренняя ошибка сервера. Я посмотрел на свои журналы, и это очень много:
[alert] [client 81.179.29.185] /home/minecraf/public_html/.htaccess: Invalid command '\xef\xbb\xbfRewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
Означает ли это, что мой хост не поддерживает .htaccess? Довольно хромой, если они этого не делают. Я уже пытался изменить разрешения .htaccess на 777, и это не помогает.
Спасибо!
Ответы
Ответ 1
\xef\xbb\xbf
- три невидимых нежелательных символа (по крайней мере, с точки зрения Apache), называемые спецификацией Юникода или байтом. Apache считает, что эти символы являются частью команды, которая следует сразу после. Это то, что вы видите в журнале, хотя символы экранированы, поэтому они видны невооруженным глазом. \xef\xbb\xbfRewriteEngine
В вашем редакторе, особенно если ваш редактор является Notepad, убедитесь, что вы сохраняете файл без спецификации. Это должно быть выбрано в диалоговом окне "Сохранить как" или в другом месте.
Ответ 2
В некоторых случаях модуль mod_rewrite в apache не загружается. Проверьте конфигурацию Apache.
Обновление:
Windows xampp. Откройте xampp/apache/conf/httpd.conf
и раскомментируйте модуль mod_rewrite.
Windows wamp. Откройте wamp/bin/apache/Apache2.x.x/conf/httpd.conf
и раскомментируйте модуль mod_rewrite.
Ubuntu: введите терминал: a2enmod rewrite
Руководство Ubuntu: cp /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
А затем перезагрузите apache
Ubuntu: service apache2 reload
ИЛИ service apache2 restart
Windows: От панели управления xampp или wamp.
Ответ 3
Попробуйте следующее:
a2enmod rewrite
/etc/init.d/apache2 restart
Ответ 4
Чтобы удалить спецификацию в unix, используйте vi и ниже команду
: установить nobomb
: wq
Ответ 5
У меня была эта проблема, и я решил:
sudo a2enmod rewrite
sudo service apache2 restart
Ответ 6
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
rewriterule ^upload$ upload.php
</IfModule>
попробуйте это.
Ответ 7
Просто сохраните файл .htaccess с кодировкой UTF-8 (без спецификации) и загрузите. Рекомендуется использовать Notepad++. (в моем случае это помогло).
ATB