Перейти к содержанию

404 Not Found

Ошибку Not Found можно получить по нескольким причинам, и каждая вызвана своими факторами.

![404 Not Found](404-not-found.png?classes=shadow)

Внимание

Примеры ниже приведены для веб-сервера Apache — самого распространённого серверного ПО.

Использование файла .htaccess в IIS

После добавления URL Rewrite на сервер IIS с помощью Web Platform Installer перезапустите IIS. Откройте интерфейс управления, раздел IIS, дважды щёлкните URL Rewrite, в разделе Inbound Rules нажмите Import Rules, в разделе Rules to Import выберите файл конфигурации — .htaccess в корне — и нажмите Import. Перезапустите IIS. Теперь открывайте Grav.

Отсутствует файл .htaccess

Первое, что нужно проверить, — есть ли в корне установки Grav файл .htaccess. Это скрытый файл, поэтому в проводнике или Finder вы его обычно не увидите. Если вы распаковали Grav, а затем выбрали и переместили или скопировали файлы, вполне возможно, что этот очень важный файл остался на месте.

Настоятельно рекомендуется распаковать архив Grav и переместить всю папку целиком, а затем просто переименовать её. Так все файлы сохранят правильное расположение.

AllowOverride All

Чтобы .htaccess из Grav мог задать правила перезаписи, необходимые для корректной работы маршрутизации, Apache должен сначала прочитать этот файл. Если в директиве <Directory> или <VirtualHost> стоит AllowOverride None, файл .htaccess полностью игнорируется. Простейшее решение — изменить это на AllowOverride All Там, где используется RewriteRule, в директиве Options нужно задать FollowSymLinks или SymLinksIfOwnerMatch. Просто добавьте в ту же строку '+FollowSymlinks' после 'Options'

Подробнее о AllowOverride и всех возможных параметрах конфигурации — в документации Apache.

Проблема с RewriteBase

Если домашняя страница сайта Grav загружается, а любая другая страница показывает эту очень грубую ошибку в стиле Apache, скорее всего, проблема в вашем файле .htaccess.

Стандартный .htaccess, который идёт вместе с Grav, в большинстве случаев работает из коробки. Однако есть конфигурации с виртуальными хостами, где файловая система не совпадает напрямую с настройками виртуального хостинга. В таких случаях нужно настроить параметр RewriteBase в .htaccess, указав правильный путь.

Короткое объяснение есть в самом файле .htaccess:

1
2
3
4
5
6
7
8
##
# Если вы получаете ошибки 404 на подстраницах, возможно, придётся
# раскомментировать RewriteBase. Замените '/' на нужную подпапку.
# Например, если Grav установлен в корне сайта, '/' подойдёт,
# иначе может понадобиться что-то вроде: RewriteBase /<your_sub_folder>
##

# RewriteBase /

Просто удалите # перед директивой RewriteBase /, чтобы раскомментировать её, и подправьте путь под своё серверное окружение.

Дополнительная информация о том, как найти файл .htaccess и разобраться с ним, есть в нашем руководстве по htaccess.

Отсутствуют модули перезаписи

Некоторые пакеты веб-серверов (это я про тебя, EasyPHP и WAMP!) не включают модуль Apache rewrite по умолчанию. Обычно его можно включить в настройках Apache или вручную в httpd.conf, раскомментировав такую строку (или похожую), чтобы Apache загружал его:

#LoadModule rewrite_module modules/mod_rewrite.so

Затем перезапустите сервер Apache.

Тестовый скрипт .htaccess

Чтобы локализовать проблемы с .htaccess и перезаписью, скачайте файл htaccess_tester.php и положите его в корень Grav.

Затем откройте в браузере http://my-site.example/htaccess_tester.php. Вы должны увидеть сообщение об успехе и копию файла .htaccess из Grav.

![](htaccess_tester.png?classes=shadow)

Дальше можно проверить, работают ли перезаписи, сделав резервную копию существующего .htaccess:

mv .htaccess .htaccess-backup

И затем попробуйте такой простой файл .htaccess:

1
2
3
4
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^.*$ htaccess_tester.php
</IfModule>

Теперь откройте URL http://my-site.example/test. Вообще любой путь должен вывести сообщение об успехе, подтверждающее, что mod_rewrite работает.

После проверки удалите тестовый файл и восстановите свой .htaccess:

rm htaccess_tester.php
mv .htaccess-backup .htaccess

Страница ошибки 404 в Grav

![404 Not Found](error-404.png?classes=shadow)

Если вы получаете ошибку в стиле Grav с текстом Error 404, значит .htaccess работает правильно, но вы пытаетесь открыть страницу, которую Grav не может найти.

Самая частая причина — страницу переместили или переименовали. Ещё стоит проверить, задан ли у страницы slug в YAML-заголовках. Он переопределяет имя папки, которое по умолчанию используется для построения URL.

Ещё одна причина — страница не маршрутизируемая. Параметр routable для страницы задаётся в заголовках страницы.

Ошибка 404 Page Not Found в Nginx

Если сайт находится в подпапке, убедитесь, что location в nginx.conf указывает на эту подпапку. В примере nginx.conf для Grav есть комментарий в коде, который это объясняет.

Если домашняя страница работает, а другие не находятся, убедитесь, что nginx.conf настроен в соответствии с примером nginx.conf.