Я работаю под Ubuntu 20.04 и в настоящее время создаю API с использованием PHP. Я добавил файл .htaccess
, который ДОЛЖЕН перенаправлять все страницы 404 обратно на мой index.php. Я спрашиваю об этом в askubuntu, потому что считаю, что это может быть проблема с моими конфигурациями Apache. Я зашел в свой 000-default
файл /etc/apace2/sites-available
и изменил:
<Directory /var/www/html>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
Я также изменил свой apache2.conf
файл /etc/apache2/apache2.conf
, чтобы он выглядел так:
<Directory />
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<Directory /usr/share>
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>
Вот содержимое моего файла .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
# Send would-be 404 requests to Craft
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^/(favicon\.ico|apple-touch-icon.*\.png)$ [NC]
RewriteRule (.+) index.php?p=$1 [QSA,L]
</IfModule>
Я попытался написать что-то вроде «ЭТО ДОЛЖНО ВЫЗВАТЬ ОШИБКУ», но когда я попытался перезагрузить браузер, я не получил ошибку 500, как ожидалось, а все еще получил ошибку 400, что говорит мне о том, что мой .htaccess
файл не был обработан.
После изменения любых файлов Apache или системы я запустил
sudo systemctl restart apache2
но без костей.
Не уверен, что еще изменить на этом этапе. Любая помощь приветствуется, спасибо.
решение1
Я подозреваю, что проблема не в том, что ваш .htaccess игнорируется, а в том, что mod_rewrite не включен. Попробуйте sudo a2enmod rewrite
перезапустить Apache2.