paulenot
@paulenot
IT Issue

Почему не работает RewriteRule на localhost?

При разработке сайта я обычно использую .htaccess с Joomla, он отлично работает на хостингах. На localhost не захотел работать. "Нагуглил" другой .htaccess, тоже работает на хостинге, но у меня так-же как отказывается:
<Directory "/var/www/html/">
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php
</Directory>


По адресу localhost/ - так и без .htaccess работает. А вот по адресу localhost/test - получаю ошибку:
Not Found
The requested URL was not found on this server.
Apache/2.4.29 (Ubuntu) Server at localhost Port 80

Почему не работает .htaccess?
  • Вопрос задан
  • 244 просмотра
Решения вопроса 1
@dodo512
httpd.apache.org/docs/2.4/mod/core.html#directory
Директива <Directory> доступна только в server config, virtual host.
Если её запихнуть в .htaccess, то вместо сайта будет страница ошибки 500, а в error.log запись <Directory not allowed here
Если с таким .htaccess сайт открывается значит в настройках AllowOverride отключена обработка .htaccess и эти файлы просто игнорируются.
В Ubuntu файлы настроек VirtualHost лежат в /etc/apache2/sites-available/.
Для включения .htaccess заменить AllowOverride None на AllowOverride All

Возможно ещё потребуется подключить mod_rewrite
sudo a2enmod rewrite
И не забыть рестартануть apache
sudo service apache2 restart
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы