Что такое ошибка 500, когда возникает и как устранить
Ошибка с кодом 500 выдается в том случае, когда причину сбоя нельзя отнести ни к какой другой категории ошибок (502, 503 и т. д.). По сути она означает «что-то произошло, а что — непонятно». В сообщении об ошибке 500, которое выдается на странице браузера, стандартно также нет сведений о ее причинах.
Как же без наличия информации определить и исправить ошибку? На практике чаще всего она вызывается сбоями в одном из основных компонентов сайта:
- в правах доступа к файлам и каталогам;
- в файле .htaccess;
- в скриптах;
- в CMS (движке сайта).
Сразу отметим, что сбои происходят на стороне сервера, а не клиента. От браузера и операционной системы пользователя здесь ничего не зависит, и нужно искать причину ошибки 500 в конфигурации программного обеспечения сайта.
Для определения причины ошибки:
- смотрим логи сервера — часто по ним можно понять, на каком этапе произошел сбой;
Например, если вы не трогали перед возникновением ошибки файл .htaccess, но устанавливали новые плагины на сайт, начать нужно с проверки последнего.
Некорректные права доступа
Каждый каталог и файл на сервере имеет определенную трехзначную кодировку прав доступа к нему. Например, 777 — такой доступ означает, что любой сторонний пользователь может изменять этот файл или папку. Для обеспечения безопасности сервер блокирует файлы, которые имеют такие широкие права доступа. В результате страница сайта не отображается, так как сервер не отдает содержимое нужных файлов, и выдается ошибка 500.
Рекомендуется выставлять права не выше 750 — для папок, и 640 — для исполняемых файлов.
Если вы недавно создавали новый каталог на сервере или загружали новые файлы, у них могут быть слишком широкие права доступа. Проверьте и исправьте их.
Как определить, что ошибка 500 возникла именно из-за этого?
Во-первых, посмотрите, какой вид имеет ошибка на экране браузера. Если вы видите текст «Internal Server Error» — то, скорее всего, дело именно в .htaccess. В случаях сбоев в работе скриптов или CMS текст ошибки обычно выглядит как «HTTP ERROR 500».
Во-вторых, попробуйте добавить в конец наименования файла .htaccess любые символы. Например, переименуйте его в .htaccess2233. Сервер не будет использовать переименованный файл, и сайт будет запускаться без него. Перезагрузите страницу, на которой была ошибка. Если она исчезла — значит, причина в .htaccess.
Что может быть неверным в файле и как это исправить?
Самый простой способ устранить ошибку 500 из-за .htaccess — отменить последние изменения в нем или загрузить файл из бекапа. Если это невозможно или нежелательно, проверьте эти варианты:
- наличие невидимых неразрывных пробелов (BOM). Если вы изменяли файл, используя не совсем подходящий редактор или кодировку, в него могли быть добавлены такие символы. Пересохраните файл в кодировке UTF-8 и загрузите на сервер;
- знак # не в начале строки.
Этот знак ставится перед началом комментария. Некоторые пытаются добавить комментарий в .htaccess в конце строки, но последние версии Apache не поддерживают такой синтаксис, и в результате вы видите ошибку 500. Для комментария нужно выделять целую строку;
- некорректные директивы Options. В зависимости от версии серверного ПО, можно их либо полностью закомментировать, либо попробовать исправить Options All -Indexes на директиву Options -Indexes, а Options +FollowSymLinks на директиву Options +SymLinksIfOwnerMatch;
- некорректные директивы +ExecCGI, IfVersion, AddHandler, php_value, php_flag, MultiViews. Если в вашем файле встречаются такие, попробуйте поочередно их удалить (или закомментировать), проверяя, исчезла ли ошибка.
Сбои в скриптах
Ошибка 500 здесь может вызываться двумя основными причинами:
- Неверный синтаксис или права доступа скрипта.
- Слишком долгое выполнение скрипта.
В первом случае:
- включите отображение ошибок в настройках сервера (или обратитесь к техподдержке, они помогут это сделать).
- проверьте, правильно ли вы загружали файлы скриптов через FTP , а лучше перезагрузите их правильным образом — в режиме ASCII. Хотя для некоторых FTP-клиентов, например, для FileZilla, лучше включать двоичный режим передачи: так содержимое файлов будет передано корректно и без искажений;
- проверьте права доступа к файлу скриптов — они должны быть выставлены на уровне 750 или 755.
Во втором случае проверьте, достаточно ли у вас оперативной памяти на тарифе, посмотрите логи, чтобы определить, как долго выполняется скрипт. Для исправления ошибки 500, возможно, потребуется оптимизировать скрипт для более экономного использования памяти или перейти на расширенный тариф.
Ошибки в CMS
- Довольно часто ошибка 500 возникает после установки плагинов и дополнений к CMS<. Особенно это актуально на WordPress.
Сайт на этом движке, как конструктор, собирается из базы и десятков различных плагинов. При этом плагины могут конфликтовать между собой. Решение простое — отключите дополнения, которые вы недавно устанавливали, и посмотрите, исчезнет ли ошибка. Если да — дело в плагине и лучше поставить другой.
- Устаревшая версия PHP. Она может конфликтовать с новыми скриптами или плагинами. Для обновления версии обратитесь к специалисту.
- Обновление версии движка. Такие работы также лучше проводить при поддержке специалистов, которые комплексно проверят совместимость скриптов и дополнений с новой версией. Иначе можем получить конфликт и ошибку 500.
Что такое веб-сервер Apache и как им пользоваться 🍂
12 апреля 2021
Хостинг
31 583
Время чтения ≈ 11 минут
Интернет невозможно представить без всевозможных сайтов. Все они работают за счёт веб-серверов – программ, отвечающих за передачу данных от физических хранилищ до браузеров пользователей.
Веб-сервер работает в качестве «посредника» между пользователем и физическим сервером. При получении запроса от посетителя он ищет необходимую страницу в каталоге с сайтом и отправляет её в ответ. Браузер принимает полученный файл, обрабатывает его и отображает на экране посетителя.
Передача информации веб-сервера выполняется по протоколу HTTP (HyperText Transfer Protocol), изначально созданного для работы с HTML-страницами. Уже позже стало возможным отправлять через HTTP файлы любых типов. В последнее время преобладают сайты, работающие через HTTPS. Это улучшенная версия HTTP, которая отличается от предшественника тем, что поддерживает шифрование трафика TLS/SSL между пользователем и сервером.
Звание самого популярного веб-сервера в мире уже более 25 лет удерживает за собой Apache HTTP Server, который принято называть сокращенно Apache или «Апач». Сегодня программа обслуживает более 40% всех существующих серверов, включая проекты IBM, eBay, PayPal и Facebook.
Рассмотрим причины популярности Apache подробнее. Это не только пополнит копилку знаний об интернет-технологиях, но и поможет сделать правильный выбор веб-сервера для размещения сайта в будущем.
Что это такое
Apache – это свободное программное обеспечение для размещения веб-сервера. Он хорошо показывает себя в работе с масштабными проектами, поэтому заслуженно считается одним из самых популярных веб-серверов. Кроме того, Apache очень гибок в плане настройки, что даёт возможность реализовать все особенности размещаемого веб-ресурса.
История создания
Apache HTTP Server был выпущен в 1995 году разработчиком Робертом Маккулом из Университета штата Иллинойс (UIUC). Продукт возник как доработанная версия другого HTTP-клиента – NCSA HTTPd 1.3, созданного Робертом ранее.
Основой для модификации стали многочисленные «патчи» или программные «заплатки» для NCSA. Именно отсюда (а не от индейского племени апачей) изначально и происходит название Apache. Оно расшифровывается как «a patchy server» или «сервер с патчами».
Разработкой и поддержкой продукта с 1999 года занимается организация Apache Software Foundation (ASF) – сообщество экспертов-энтузиастов со всего мира. Этим же некоммерческим фондом была создана официальная лицензия ПО – Apache License.
В 2000 году ASF представило новую версию Apache 2.0 с полностью переработанной архитектурой, свободной от кода NCSA. С этого момента веб-сервер развивается по двум основным веткам – 1.х и 2.х.
Как устроен Apache
Архитектура
Apache состоит из ядра и динамической модульной системы. Параметры системы изменяются с помощью конфигурационных файлов.
Ядро
Ядро Apache разработано Apache Software Foundation на языке C. Основные функции — обработка конфигурационных файлов, протокол HTTP/HTTPS и загрузка модулей. Ядро может работать без модулей, но будет иметь ограниченный функционал.
Модульная система
Модуль – отдельный файл, подключение которого расширяет изначальный функционал ядра. Они могут включаться в состав ПО при первоначальной установке или подгружаться позже через изменение конфигурационного файла.
Большинство из них отвечает за определенный аспект обработки клиентского запроса – поддержку различных языков программирования, безопасность, кэширование, аутентификацию и т.д. Таким образом, большая задача разбивается на несколько фаз, каждую из которых решает отдельный, узкоспециализированный модуль.
Для Apache существует больше 500 модулей. Многие популярные веб-приложения сразу выпускаются в виде модуля к Apache. Например, ISPmanager и VDSmanager.
Конфигурация
Система конфигурации Apache работает на текстовых файлах с прописанными настройками. Она подразделяется на три условных уровня, для каждого из которых имеется свой конфигурационный файл:
- Уровень конфигурации сервера (файл httpd.conf) – основной конфигурационный файл. Действие распространяется на весь механизм веб-сервера.
- Уровень каталога (файл .htaccess) – дополнительный конфигурационный файл. Его директивы охватывают только каталог, где расположен файл, а также вложенные подкаталоги.
- Уровень виртуального хоста (файл httpd.conf> или extra/httpd-vhosts.conf).
Обычно конфигурационные файлы Apache находятся в папке «conf», а дополнительные конфигурационные файлы во вложенной в нее папке «extra». Внести изменения можно как через редактирование самого файла, так и через командную строку.
Виртуальные хосты
Веб-хост – это компонент сервера, отвечающий за обслуживание одного размещенного на нем объекта (сайта, виртуального сервера). Система виртуальных хостов Apache позволяет одновременно запускать несколько проектов с одного IP-адреса.
В Apache можно установить настройки модуля и ядра, а также вводить лимиты на потребление серверных ресурсов (трафик, RAM, CPU) для каждого виртуального хоста в отдельности. Это технологическая основа всего механизма веб-хостинга.
Достоинства и недостатки Apache
Плюсы
- Доступность. Это программное обеспечение с открытым исходным кодом. Значит, его может бесплатно использовать или модифицировать любой желающий.
Разработчики по всему миру создают конфигурации и модули веб-сервера для своих специфических нужд. По этой же причине Apache регулярно получает полезные дополнения, расширяющие его базовый функционал.
- Гибкость настройки. Apache использует несколько конфигурационных файлов для управления веб-сервером. Это позволяет настроить ПО под узконаправленные задачи.
- Функциональность. У Apache динамическая модульная структура. Можно быстро подключать дополнительный функционал в виде скачиваемых модулей, даже без обращения к внешним источникам. Это позволяет решать целый комплекс важнейших задач в области безопасности, кэширования, редактирования URL, распределения нагрузки. Благодаря гибридным модулям MPM, Apache может одинаково успешно обслуживать статический и динамический контент. Есть возможность оперативно отключать ненужные модули и ускорять работу веб-сервера
- Кроссплатформенность. Apache работает как на Windows, так и на всех Unix-подобных системах.
Администрирование веб-сервером не имеет серьёзных отличий на разных ОС. Индивидуален только процесс установки и расположение директорий с файлами программы.
- Совместимость. Apache работает на базе скриптовых или веб-ориентированных языков (PHP, Python, Tcl, Ruby, Perl, ASP), что делает его совместимым с самым широким спектром баз данных и серверного ПО. Многие веб-приложения и инструменты сразу выходят со средствами запуска из-под Apache в виде PHP-модуля. Веб-сервер, поддерживает технологии FastCGI и CGI, позволяющие пользоваться программными продуктами на объектно-ориентированных языках Java, sh, C, C++.
- Масштабируемость. Подходит для веб-ресурсов любого масштаба. Apache хорошо работает как на одностраничном сайте (лендинге), так и на многостраничном сайте с ежедневной аудиторией в десятки тысяч посетителей.
- Поддержка пользователей. Apache удерживает первенство популярности среди веб-серверов с 1996 года. За прошедшее время для него создана обширнейшая база документации – как официальной, так и созданной сторонними разработчиками.
Готовые, подробно описанные руководства можно найти практически на любой сценарий.
Минусы
- Производительность. Скорость обработки запросов Apache несколько ниже, по сравнению со своими конкурентами. Гибкость веб-сервера в некоторых случаях вредит производительности. Например, Apache приходится каждый раз считывать несколько конфигурационных файлов на сервере, затрачивая системные ресурсы и время. Но этот и многие другие факторы можно исправить, отключив ненужные опции. Правда в таком случае функциональность Apache не будет сильно отличаться от других веб-серверов.
- Сложная конфигурация повышает уязвимость. Возможность подключать модули в Apache это не всегда преимущество. Чем больше модулей, тем сложнее становятся настройки. Соответственно, больше шансов допустить критические пробелы в контуре безопасности.
- Синтаксис конфигов.. В файлах с параметрами программы используются разнообразные переменные, поэтому настройка и управление веб-сервером может показаться сложной новичкам.
Упростить администрирование Apache можно с помощью бесплатного инструмента Apache GUI.
- Излишний функционал. Даже без дополнительных модулей Apache предоставляет пользователям массу возможностей. Правда, большинство использует лишь небольшую часть базового функционала приложения. Поэтому часто после установки приходится тратить время на отключение «лишних» модулей.
Альтернативы Apache
NGINX
Nginx (Engine-X, «энжинкс») — второе по популярности веб-серверное приложение и главный конкурент Apache. Было выпущено в 2004 году под открытой лицензией BSD. Изначально приложение создавалось для решения проблемы масштабирования, известной как «10 тысяч соединений» (С10к). Это значит, что до Nginx веб-сервер не был способен одновременно обрабатывать пользовательские запросы более чем с 10 000 подключений.
У этого веб-сервера асинхронная событийно-ориентированная архитектура (event-driven), которая позволяет добиваться быстрого масштабирования даже при минимальных ресурсах. Вместо того, чтобы создавать новый процесс для каждого пользовательского запроса, Nginx обрабатывает множество соединений в едином потоке.
Nginx отлично подходит для веб-проектов с высокой посещаемостью. Однако веб-сервер не может самостоятельно работать с динамическим контентом. Поэтому его чаще используют для статических веб-сайтов или например, в связке с PHP-FPM или Apache HTTP Server как прокси-сервер.
Lighttpd
Веб-сервер Lighttpd (произносится «лайти») — кроссплатформенное программное обеспечение на языке С. Выпущено в 2003 году под лицензией BSD. «Лайти» работает на операционных системах Windows и семейства Unix/Linux. Приложение поддерживает технологии FastCGI, SCGI, HTTP proxy, Auth, перезаписи URL и AJP (с версии 1.5).
Как и Nginx, изначально «Лайти» создавалось для решения проблемы «С10к». Неудивительно, что его специализация — веб-проекты с большой посещаемостью. В числе компаний, использующих Lighttpd, такие гиганты, как Google, Википедия, Яндекс и Ubuntu.
Microsoft IIS
Internet Information Services (IIS) — набор сервисов для создания веб-сервера от компании Microsoft. Распространяется в комплекте с операционными системами Windows NT как дополнительно устанавливаемый компонент. Веб-сервер поддерживает технологии CGI, FastCGI, ISAPI и SSI.
Главная сила IIS – в глубокой интеграции и поддержке продуктов Microsoft. Его часто выбирают те, чьи ресурсы работают на движке ASP.NET и используют скриптовый язык ASPX. Главный недостаток – жесткая привязка к операционной системе Windows и отсутствие версий для Unix/Linux.
Tomcat
Apache Tomcat — это контейнер сервлетов, который обрабатывает спецификации Java. Например, Java Servlet, Java Server Pages (JSP), Java EL и WebSocket. Продукт был разработан фондом Apache Software Foundation на основе открытой лицензии Apache License 2.0. Tomcat используется как в качестве самостоятельного веб-сервера, так и в связке с Apache HTTP Server.
Приложение написано на языке Java и способно автоматически загружать Java-библиотеки. Его основная специализация — веб-проекты с динамическим содержимым. Но у Apache Tomcat хуже возможности для настройки, что сужает его сферу применения. Например, для запуска WordPress эффективнее использовать обычный HTTP-сервер Apache.
Заключение
Сервер Apache – универсальный инструмент для быстрого и безопасного запуска интернет-проектов разного масштаба. Веб-сервер совместим с большинством существующих операционных систем, программных продуктов и языков разработки.
Система конфигурационных файлов дает «Апач» гибкие возможности для настройки, а динамически подгружаемые модули расширяют функционал до максимума. Особенно эффективно использовать веб-сервер Apache в связке с ближайшим аналогом – Nginx.
Для работы с «Апач» пользователю нужен определенный уровень IT грамотности. Желательно знать основы программирования и веб-администрирования. Но процесс сильно упрощает активное сообщество поддержки и отлично развитая база официальной документации.
Раскройте все возможности и преимущества веб-сервера Apache с надёжным хостингом от Eternalhost!
Оцените материал:
[Всего голосов: 3 Средний: 5/5]
apache — .

спросил
Изменено 1 год назад
Просмотрено 314 тысяч раз
Часть коллектива AWS
У меня есть сервер службы AWS EC2, работающий на Linux Ubuntu, и я установил apache, php и mysql.
Я добавил файл .htaccess
в корневой каталог моего документа /var/www/html
.
Я ввел в него этот код: ErrorDocument 404 /var/www/html/404.php
и до сих пор не отображается.
Я продолжал вводить эту команду несколько раз: sudo service httpd restart
для перезагрузки сервера, но никаких изменений не отображается…
Как это исправить… Я сделал что-то не так?
- апач
- .
htaccess
- амазон-ec2
- амазон-веб-сервисы
- apache-config
1
Во-первых, обратите внимание, что перезапуск 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, когда вы укажете браузеру каталог, содержащий этот файл. Если это не так, то у вас неправильно настроен AllowOverride.
6
Включить модуль Apache mod_rewrite
a2enmod перезаписать
добавьте следующий код в
/etc/apache2/sites-available/default
Разрешить переопределение Все
Перезапустите апач
/etc/init.d/apache2 перезапустить
8
Если вы попробовали все вышеперечисленное, все из которых являются правильными и хорошими ответами, и ваш файл htaccess не работает или не читается, измените директиву в Файл apache2.conf
. В Ubuntu путь /etc/apache2/apache2.
conf
Измените директиву
, указывающую на ваши общедоступные веб-страницы, где находится файл htaccess. Изменение с AllowOverride None
на AllowOverride All
Индексы опционов FollowSymLinks Разрешить переопределить все Требовать все предоставленные
У меня была та же проблема, и я нашел ответ и объяснение на Ubuntu Ask! форум https://askubuntu.com/questions/421233/enbling-htaccess-file-to-rewrite-path-not-working
3
Для Ubuntu,
Сначала запустите эту команду: —
sudo a2enmod rewrite
Затем отредактируйте файл /etc/apache2/sites-available/000-default.conf
с помощью nano или vim с помощью этой команды: —
sudo nano /etc/apache2/sites-available/000-default.conf
Затем в файле 000-default.conf
добавьте это после строки DocumentRoot /var/www/html
. Если ваш корневой html-каталог отличается от другого, напишите так: —
<Каталог "/var/www/html"> Разрешить переопределить все
Сделав все, перезапустите apache с помощью команды sudo service apache2 restart
Скорее всего, для AllowOverride установлено значение None. в разделе Directory файла apache2.conf, расположенном в папке /etc/apache2
Попробуйте установить для него значение AllowOverride All
Просто выполните 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
вы получите
DocumentRoot /var/www/html
ИЛИ
DocumentRoot /var/www
строка. Добавьте следующий код после него.
<Каталог /var/www/html/> Индексы опционов FollowSymLinks Разрешить переопределить все Требовать все предоставленные
Сделать пользователем путь к тегу каталога таким же, как показано в вашем файле.
Перезапустите сервер Apache с помощью следующей команды
перезагрузка службы sudo apache2
1
По моему опыту, директива каталога /var/www/ запрещает директивы виртуального хоста для подпапок. Итак, если вы испробовали все предложения и все еще не работаете, и вы используете виртуальные хосты, попробуйте это;
1 — Убедитесь, что у вас есть AllowOverride All
директива в /etc/apache2/sites-available/example.
com.conf
2 — Проверьте /var/www/ директивы каталога в /etc/apache2/apache2.conf
(возможно, в строке 164), что выглядит как ;
<Каталог /var/www/> Индексы опционов FollowSymLinks Аллововеррайд Требовать все предоставленные
Если есть директива AllowOverride None
, измените ее на AllowOverride Все
или просто экранирующая строка
По умолчанию Apache запрещает использование файла .htaccess для применения правил перезаписи, поэтому
Шаг 1 — Включение mod_rewrite (если не включено) Во-первых, нам нужно активировать mod_rewrite. Он доступен, но не включен при чистой установке Apache 2.
$ sudo a2enmod переписать
Это активирует модуль или предупредит вас о том, что модуль уже включен. Чтобы эти изменения вступили в силу, перезапустите Apache.
$ sudo systemctl перезапустить apache2
mod_rewrite теперь полностью включен. На следующем шаге мы создадим файл .htaccess, который будем использовать для определения правил перезаписи для перенаправлений.
Шаг 2 — Настройка .htaccess Откройте файл конфигурации Apache по умолчанию с помощью nano или вашего любимого текстового редактора.
$ sudo nano /etc/apache2/sites-available/000-default.conf
Внутри этого файла вы найдете блок, начинающийся с первой строки. Внутри этого блока добавьте следующий новый блок, чтобы ваш файл конфигурации выглядел следующим образом. Убедитесь, что все блоки имеют правильный отступ.
/etc/apache2/сайты-доступные/000-default.conf
<Виртуальный хост *:80> <Каталог /var/www/html> Опционы Индексы FollowSymLinks MultiViews Разрешить переопределить все Требовать все предоставленные . . .
Сохраните и закройте файл. Чтобы эти изменения вступили в силу, перезапустите Apache.
$ sudo systemctl перезапустить apache2
Готово. Ваш .htacess должен работать. Эта ссылка действительно может кому-то помочь https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04
1
Я разрешил это использование. Используя этот сайт, щелкните здесь , следуйте инструкциям, те же шаги следуют до версии Ubuntu 18.04
. Перейдите в /etc/apache2/apache2.conf
. Вы должны отредактировать этот файл (у вас должны быть права root). Измените текст каталога, как показано ниже:
<Каталог /var/www/>
Параметры Индексы FollowSymLinks
AllowOverride All
Требовать все предоставлено
Теперь вам нужно перезапустить apache.
перезапуск службы apache2
В WampServer
Открыть значок WampServer в трее —-> Apache —> Модули Apache —>rewrite_module
Для полноты, если «AllowOverride All» не решает вашу проблему, вы можно отладить эту проблему, используя:
Запустите
apachectl -S
и посмотрите, есть ли у вас более одного namevhost.Возможно, httpd ищет .htaccess другого DocumentRoot.
Используйте
strace -f apachectl -X
и посмотрите, откуда загружается (или не загружается) .htaccess.
у меня много сайтов на виртуальной машине, и я решил это только изменив конфиг сайта в котором мне нужно .htaccess
что я сделал:
-
sudo a2enmod rewrite
далее я изменил конфигурацию только для конкретного сайта, а не для каждого сайта «example.com»
-
sudo nano /etc/apache2/sites-enable/example.com.conf
внутри него я добавил
Разрешить переопределить все
-
перезапуск службы apache2
, так что это применимо только к 1 сайту, потому что, когда я попытался применить изменения ко всему серверу, он разбился, не знаю почему, но это решило мою проблему
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
apache — Почему файл Apache2 .

спросил
Изменено 6 месяцев назад
Просмотрено 78 тысяч раз
Я создал файл .htaccess только со следующей строкой:
Опции — Индексы
Однако для каталога по-прежнему отображается индекс.
Я только что установил Apache2 и использую все значения по умолчанию (я не модифицировал apache2.conf или httpd.conf).
ОС: Ubuntu 12.04 (Precise Pangolin)
Версия Apache2: Версия сервера: Apache/2.2.22 (Ubuntu) Сервер построен: 13 февраля 2012 г. 01:51:56
$ ls -l .htaccess
-rwxr-xr-x .htaccess
РЕДАКТИРОВАТЬ:
Я последовал совету lanzz и добавил тарабарщину в файл .
и обнаружил, что файл htaccess
.htaccess
не читается.
- апач
- .htaccess
6
Вы должны убедиться, что конфигурация Apache позволяет выполнять .htaccess. В конфиге вашего виртуального хоста должна быть строчка:
AllowOverride All
Если нет, то .htaccess не действует.
6
Чтобы это заработало, я добавил следующее в /etc/apache2/httpd.conf
(который по умолчанию является файлом нулевой длины, когда установлен Apache), а затем перезапустил Apache. Теперь Options -Indexes
в файле .htaccess
работает как надо. Вот необходимый минимум, чтобы заставить его работать:
/etc/apache2/httpd.conf :
Корень документа /var/www <Каталог/>
Предложение lanzz добавить строку тарабарщины в файл .
, чтобы увидеть, читается ли он, помогло в диагностике проблемы. htaccess
Обратите внимание, что AllowOveride
по умолчанию имеет значение All
согласно комментарию Эвана Мулавски, поэтому в минимальном наборе из 9 это не требуется.0015 httpd.conf строк выше.
3
У меня была такая же проблема. Я использовал виртуальный хост, поэтому я изменил httpd-vhosts.conf, поэтому, если вы используете его, это может помочь
Если вы настраиваете свой хост, ссылка на тег каталога совпадает с корнем вашего документа
имя_сервера DocumentRoot "C:/Веб-сайты/htdocs/вашсайт" <Каталог "C:/Веб-сайты/htdocs/вашсайт"> Параметры Разрешить переопределить все
Мне нужно AllowOverride All
, чтобы распознать файл .htaccess.
Редактировать
Мне также нужно было добавить путь к корню сайта в самом теге каталога. то есть
. Это было по умолчанию в образцах, которые я использовал.
1
Поскольку файла httpd.conf
больше нет, вам нужно сделать следующее на VPS:
- Перейти к
/etc/apache2/sites-enabled/
- Выполните
ls
, чтобы найти файл для веб-сайта, который вы ищете - Отредактируйте соответствующий файл с помощью
nano THE_CONF_FILE
или любого другого редактора, который вам нужен - Изменить все
AllowOverride None
значения, которые вы видите в разных... AllowOverride All
Сохраните файл и закройте его
Теперь вам нужно включить перезапись модуля, выполнив команду:
sudo a2enmod переписать
- И, наконец, чтобы активировать новую конфигурацию, вам нужно запустить:
перезапуск службы apache2
Теперь все будет работать как по маслу!
3
Если у вас есть
AllowOverride Нет
Измените это на:
AllowOverride All
в вашем httpd. conf или в вашем файле виртуального хоста по умолчанию в in
/etc/apache2/доступные сайты/…conf
Я решил эту проблему на RHEL, отредактировав файл /etc/http/conf/httpd.conf
Я изменил все
AllowOverride Нет
До
AllowOverride All
Также вы можете проверить httpd.conf AllowOverride, выполнив команду на RHEL
grep -i AllowOverride /etc/conf/conf/httpd.conf
Кроме того, помимо изменения AllowOverride All в файле конфигурации виртуального хоста, вам также может понадобиться добавить следующее в начало файла .htaccess:
RewriteEngine включен Переписать Базу /
В противном случае может по-прежнему не обнаруживаться перезапись или перенаправление.
Еще одна причина, по которой файл htaccess не читается, заключается в том, что существующий htaccess применяет перенаправление HTTPS 301, которое браузер затем кэширует, что может быть проблемой, если виртуальные хосты настроены неправильно. Полное объяснение ниже.
Если вы настраиваете виртуальный хост, например, в Apache и XAMPP, при первом запуске URL-адреса вашего виртуального хоста, если у вас есть существующий файл htaccess с перенаправлением HTTPS 301, ваш браузер будет перенаправлен на HTTPS-версия вашего виртуального хоста. Но есть потенциальная проблема. Если вы явно не настроили виртуальный хост *:433 для рассматриваемого домена, в файле конфигурации Apache vhosts Apache по умолчанию будет использовать первый указанный виртуальный хост.
В зависимости от содержимого этого виртуального хоста по умолчанию может быть невозможно понять, что происходит, и пользователь будет безумно пытаться определить, почему изменения в файле htaccess больше не обрабатываются.
Как только вы определите, что происходит, обходной путь — отключить любые перенаправления HTTPS, перезагрузить компьютер и повторить попытку без HTTPS. Реальное решение — завершить полную настройку виртуального хоста 443 с сертификатом.