У меня есть сервер из сервиса AWS EC2, работающий в Linux Ubuntu, и я установил apache, php и mysql.
Я добавил .htaccess
файл в корень моего документа /var/www/html
.
Я ввел этот код в нем:
ErrorDocument 404 /var/www/html/404.php
и он до сих пор не появляется.
Я продолжал вводить эту команду несколько раз: sudo service httpd restart
перезагрузить сервер, но без изменений ...
Как я могу это исправить ... Я сделал что-то не так?
Заранее спасибо!
400 Bad Request
ошибку/var/www/html/404.php
?Ответы:
Во-первых, обратите внимание, что перезапуск httpd не требуется для файлов .htaccess. Файлы .htaccess специально предназначены для людей, у которых нет root - то есть они не имеют доступа к файлу конфигурации сервера httpd и не могут перезапустить сервер. Поскольку вы можете перезапустить сервер, вам не нужны файлы .htaccess, и вы можете напрямую использовать конфигурацию основного сервера.
Во-вторых, если файлы .htaccess игнорируются, вам необходимо проверить, правильно ли установлен AllowOverride. См. Http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride для получения подробной информации. Вы также должны убедиться, что он установлен в правильной области - то есть в правильном блоке в вашей конфигурации. Убедитесь, что вы НЕ редактируете, например, блок.
В-третьих, если вы хотите убедиться, что файл .htaccess действительно читается, поместите в него мусор. Недопустимая строка, такая как «INVALID LINE HERE», в вашем файле .htaccess приведет к ошибке 500 Server, когда вы укажете браузеру на каталог, содержащий этот файл. Если это не так, то у вас не настроен AllowOverride правильно.
источник
"A STRING"
в свой .htaccess, поэтому я получил ошибку, поэтому я вставилAllowOverride All
всеapache2.conf
в своем Debian, и это работаетAllowOverride
работает только в<Directory>
директивах и будет игнорироваться, если помещен в<Location ...>
раздел, см. Httpd.apache.org/docs/2.4/mod/core.html#allowoverride<Directory>
директива ожидает абсолютный путь вместо относительного. В моем случае<Directory />
не получилось, пока<Directory /var/www/html/subdir>
работал.Включить модуль Apache mod_rewrite
a2enmod rewrite
добавьте следующий код в
/etc/apache2/sites-available/default
AllowOverride All
Перезапустите Apache
/etc/init.d/apache2 restart
источник
Если вы перепробовали все вышеперечисленное, которые являются действительными и хорошими ответами, и ваш файл htaccess не работает или читается, измените директиву в
apache2.conf
файле. Под Ubuntu путь/etc/apache2/apache2.conf
Измените
<Directory>
директиву, указывающую на ваши общедоступные веб-страницы, где находится файл htaccess. Изменить сAllowOverride None
наAllowOverride All
У меня была такая же проблема, и я нашел ответ и объяснение в Ubuntu Ask! форум /ubuntu/421233/enabling-htaccess-file-to-rewrite-path-not-working
источник
AllowOverride FileInfo
требуется только 3-я строка для.htaccess
чтения и использования файла.All
также включает дополнительные переопределения конфигурации, такие как.httpasswd
(которые можно включить отдельно, используяAuthconfig
вместоAll
).Для Ubuntu, во-
первых, запустите эту команду: -
Затем отредактируйте файл,
/etc/apache2/sites-available/000-default.conf
используя nano или vim, используя эту команду: -Затем в
000-default.conf
файле добавьте это после строкиDocumentRoot /var/www/html
. Если ваш корневой каталог html - это что-то другое, то напишите:Сделав все, перезапустите apache с помощью команды
sudo service apache2 restart
источник
Просто выполните 3 шага
Включите mode_rewrite, используя следующую команду
sudo a2enmod переписать
Пароль будет запрошен. Так что введите свой пароль
Обновите файл 000-default.conf или default.conf, расположенный в каталоге / etc / apache2 / sites-available / . Вы не можете редактировать его напрямую. поэтому используйте следующую команду, чтобы открыть
sudo gedit /etc/apache2/sites-available/000-default.conf
Или sudo gedit /etc/apache2/sites-available/default.conf
ты получишь
ИЛИ
линия. Добавьте следующий код после него.
Сделайте так, чтобы путь к тегу каталога был таким же, как показано в вашем файле.
Перезагрузите сервер apache, используя следующую команду
перезапуск службы sudo apache2
источник
Скорее всего, для AllowOverride установлено значение None. в разделе каталога apache2.conf, расположенном в папке / etc / apache2
Попробуйте установить для него AllowOverride All
источник
По моему опыту, директива / var / www / directory запрещает директивы virtualhost в подпапках. Так что, если вы перепробовали все предложения и все еще не работали, и вы используете виртуальные хосты, попробуйте это;
1 - Убедитесь, что у вас есть
AllowOverride All
директива в/etc/apache2/sites-available/example.com.conf
2 - Проверьте директивы / var / www / Directory в
/etc/apache2/apache2.conf
(возможно, в строке 164), как это выглядит;Если есть
AllowOverride None
директива, измените ееAllowOverride All
или просто экранируйтеисточник
По умолчанию Apache запрещает использование файла .htaccess для применения правил перезаписи, поэтому
Шаг 1 - Включение mod_rewrite (если не включено) Сначала нам нужно активировать mod_rewrite. Он доступен, но не включен с чистой установкой Apache 2.
Это активирует модуль или предупредит вас, что модуль уже включен. Чтобы эти изменения вступили в силу, перезапустите Apache.
mod_rewrite теперь полностью включен. На следующем шаге мы настроим файл .htaccess, который будем использовать для определения правил перезаписи для перенаправлений.
Шаг 2 - Настройка .htaccess Откройте файл конфигурации Apache по умолчанию, используя nano или ваш любимый текстовый редактор.
Внутри этого файла вы найдете блок, начинающийся с первой строки. Внутри этого блока добавьте следующий новый блок, чтобы ваш файл конфигурации выглядел следующим образом. Убедитесь, что все блоки имеют правильные отступы.
/etc/apache2/sites-available/000-default.conf
Сохраните и закройте файл. Чтобы эти изменения вступили в силу, перезапустите Apache.
Готово. Ваш .htacess должен работать. Эта ссылка может действительно помочь кому-то https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04
источник
$ sudo httpd -k restart
(Red Hat 4.4.7-23)Я очистил это использование. Используя этот сайт, нажмите здесь , следуйте инструкциям, те же действия выполняются до версии Ubuntu 18.04
источник
В
WampServer
Open WampServer Tray значок ----> Apache ---> Модули Apache ---> rewrite_moduleисточник
используйте RewriteBase / {ваша папка} / в вашем .htaccess
источник
Для полноты, если «AllowOverride All» не решит вашу проблему, вы можете отладить эту проблему, используя:
Запустите
apachectl -S
и посмотрите, если у вас есть более одного namevhost. Возможно, httpd ищет .htaccess другого DocumentRoot.Используйте
strace -f apachectl -X
и найдите, куда он загружается (или не загружается) .htaccess.источник