Любой вебмастер рано или поздно покупает в свое хозяйство VPS -сервер, на котором будет разворачивать свои эксперименты. Я уже сейчас дорос до этого, поэтому прикупил новый хостинг, на котором потихоньку буду разворачивать новые проекты и пытаться настраивать сервер до боевого состояния (как никак админ же).
После установки связки Apapche+MySQL+PHP у меня возникла проблема, которая приводила к невозможности выбора на сайтах Textpattern другого режима постоянных ссылок, кроме беспорядка.
Как оказалась проблема кроется в отсутствии mod_rewrite.
В большинстве случаев для того, чтобы активировать mod_rewrite в Apache2 необходимо выполнить 1 команду и после перезагрузить сервер, но случается, что этот способ не работает, поэтому привожу другой способ сделать это. Так сказать, чтобы наверняка.
Включаем mod_rewrite в Apache2 двумя способами:
- Способ №1 – простой
- Активируем mod_rewrite командой:
- перегружаем Apache2:
или
на
перезапускаем демон Apache2:
Если будут какие-то вопросы, то пишите, постараюсь помочь.
У меня есть сервер из сервиса AWS EC2, работающий в Linux Ubuntu, и я установил apache, php и mysql.
Я добавил .htaccess файл в корне моего документа /var/www/html ,
Я ввел этот код в нем:
ErrorDocument 404 /var/www/html/404.php и это все еще не обнаруживается.
Я продолжал вводить эту команду несколько раз: sudo service httpd restart перезагрузить сервер, но не отображаются изменения …
Как я могу это исправить … Я сделал что-то не так?
Решение
Во-первых, обратите внимание, что перезапуск 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 правильно.
Другие решения
Включить модуль Apache mod_rewrite
добавьте следующий код в /etc/apache2/sites-available/default
Если вы перепробовали все вышеперечисленное, которые являются действительными и хорошими ответами, и ваш файл htaccess не работает или читается, измените директиву в apache2.conf файл. Под Ubuntu путь /etc/apache2/apache2.conf
Изменить директива, указывающая на ваши общедоступные веб-страницы, где находится файл htaccess. Меняться от AllowOverride None в AllowOverride All
За Ubuntu,
Сначала запустите эту команду:
Затем отредактируйте файл /etc/apache2/sites-available/000-default.conf используя nano или vim с помощью этой команды: —
Тогда в 000-default.conf файл, добавьте это после строки DocumentRoot /var/www/html , Если ваш корневой каталог html — это что-то другое, то напишите:
Сделав все, перезапустите apache с помощью команды sudo service apache2 restart
Скорее всего, для AllowOverride установлено значение None. в разделе каталога apache2.conf, расположенном в папке / etc / apache2
Попробуйте установить для него AllowOverride All
Просто выполните 3 шага
Включите mode_rewrite, используя следующую команду
sudo a2enmod переписать
Пароль будет запрошен. Так что введите свой пароль
Обновите свой 000-default.conf или же default.conf файл находится в / и т.д. / apache2 / сайты-доступны / каталог. Вы не можете редактировать его напрямую. поэтому используйте следующую команду, чтобы открыть
sudo gedit /etc/apache2/sites-available/000-default.conf
Или же
sudo gedit /etc/apache2/sites-available/default.conf
линия. Добавьте следующий код после него.
Сделайте так, чтобы путь тега каталога был таким же, как показано в вашем файле.
Перезагрузите сервер apache, используя следующую команду
перезапуск службы sudo apache2
По моему опыту, директива / var / www / directory запрещает директивы virtualhost. Так что, если вы перепробовали все предложения и все еще не работали, и вы используете виртуальные хосты, попробуйте это;
1 — убедитесь, что у вас есть
AllowOverride All директива в
/etc/apache2/sites-available/example.com.conf
2 — Проверьте / var / www / Директивы директивы в /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 или ваш любимый текстовый редактор.
Внутри этого файла вы найдете блок, начинающийся с первой строки. Внутри этого блока добавьте следующий новый блок, чтобы ваш файл конфигурации выглядел следующим образом. Убедитесь, что все блоки имеют правильные отступы.
Сохраните и закройте файл. Чтобы эти изменения вступили в силу, перезапустите Apache.
среда, 18 января 2017 г.
Отладка htaccess в OpenServer
Правильная настройка htaccess – та ещё морока.
Иногда, всё настроил вроде бы правильно, но где-то что-то не работает, по неизвестным причинам.
Выяснить, в чём же дело, нам поможет отладка.
Открываем в меню Опенсервера:
Отладка -> Конфигурация -> Apache-2.4
В блокнотах откроются два шаблона конфигурации. Нас интересует большой конфигурационный файл от сервера: Apache-2.4_server.conf
Ищем строку "LogLevel warn" в разделе "Конфигурация сообщений об ошибках".
Меняем на следующий текст:
LogLevel warn rewrite:trace8
Теперь модуль mod_rewrite расскажет нам всё о своей работе в логе Апача.
В меню Опенсервера выбираем
Просмотр логов -> Apache отладка
По завершению отладки, не забываем поменять настройку обратно. Иначе файл лога расплодится до неприличных размеров.