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

Внимание
Примеры ниже приведены для веб-сервера 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:
Просто удалите # перед директивой RewriteBase /, чтобы раскомментировать её, и подправьте путь под своё серверное окружение.
Дополнительная информация о том, как найти файл .htaccess и разобраться с ним, есть в нашем руководстве по htaccess.
Отсутствуют модули перезаписи¶
Некоторые пакеты веб-серверов (это я про тебя, EasyPHP и WAMP!) не включают модуль Apache rewrite по умолчанию. Обычно его можно включить в настройках Apache или вручную в httpd.conf, раскомментировав такую строку (или похожую), чтобы Apache загружал его:
Затем перезапустите сервер Apache.
Тестовый скрипт .htaccess¶
Чтобы локализовать проблемы с .htaccess и перезаписью, скачайте файл htaccess_tester.php и положите его в корень Grav.
Затем откройте в браузере http://my-site.example/htaccess_tester.php. Вы должны увидеть сообщение об успехе и копию файла .htaccess из Grav.

Дальше можно проверить, работают ли перезаписи, сделав резервную копию существующего .htaccess:
И затем попробуйте такой простой файл .htaccess:
Теперь откройте URL http://my-site.example/test. Вообще любой путь должен вывести сообщение об успехе, подтверждающее, что mod_rewrite работает.
После проверки удалите тестовый файл и восстановите свой .htaccess:
Страница ошибки 404 в Grav¶

Если вы получаете ошибку в стиле Grav с текстом Error 404, значит .htaccess работает правильно, но вы пытаетесь открыть страницу, которую Grav не может найти.
Самая частая причина — страницу переместили или переименовали. Ещё стоит проверить, задан ли у страницы slug в YAML-заголовках. Он переопределяет имя папки, которое по умолчанию используется для построения URL.
Ещё одна причина — страница не маршрутизируемая. Параметр routable для страницы задаётся в заголовках страницы.
Ошибка 404 Page Not Found в Nginx¶
Если сайт находится в подпапке, убедитесь, что location в nginx.conf указывает на эту подпапку. В примере nginx.conf для Grav есть комментарий в коде, который это объясняет.
Если домашняя страница работает, а другие не находятся, убедитесь, что nginx.conf настроен в соответствии с примером nginx.conf.