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

Страница не найдена — 404⚓︎

Есть несколько причин, по которым вы можете получить ошибку Не найдено, и каждая из них вызвана разными факторами.

404 Not Found

Приведенные ниже примеры относятся к веб-серверу Apache, который является наиболее распространенным серверным программным обеспечением..

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

После добавления URL Rewrite на сервер IIS с помощью установщика веб-платформы перезапустите сервер IIS. Перейдите в интерфейс управления IIS, дважды щелкните «Переопределение URL-адреса», в разделе «Правила для входящих подключений» щелкните «Правила импорта», в разделе «Правила для импорта» перейдите к файлу конфигурации, выбрав файл .htaccess в корне, а затем нажмите «Импорт». Перезагрузите сервер IIS. Получите доступ к Grav прямо сейчас.

Отсутствующий файл .htaccess⚓︎

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

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

AllowOverride All⚓︎

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

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

Проблема RewriteBase⚓︎

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

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

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

##
# If you are getting 404 errors on subpages, you may have to uncomment the RewriteBase entry
# You should change the '/' to your appropriate subfolder. For example if you have
# your Grav install at the root of your site '/' should work, else it might be something
# along the lines of: RewriteBase /<your_sub_folder>
##

# RewriteBase /

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

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

Отсутствующие модули Rewrite⚓︎

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

#LoadModule rewrite_module modules/mod_rewrite.so

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

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

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

Затем перейдите в браузере по адресу http://yoursite.com/htaccess_tester.php. Вы должны получить сообщение об успешном выполнении и увидеть содержимое файла .htaccess.

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

mv .htaccess .htaccess-backup

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

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^.*$ htaccess_tester.php
</IfModule>

Затем попробуйте этот URL: http://yoursite.com/test. Фактически, любой путь, который вы используете, должен отображать сообщение об успешном выполнении, сообщающее вам, что mod_rewrite работает.

После того, как вы закончили тестирование, вы должны удалить тестовый файл и восстановить файл .htaccess:

rm htaccess_tester.php
mv .htaccess-backup .htaccess

Встроенная страница ошибки 404⚓︎

404 Not Found

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

Наиболее частая причина этого - просто перемещение или переименование страницы. Еще одна вещь, которую нужно проверить, это установить ли для страницы slug в заголовках YAML страницы. Это переопределяет явное имя папки, которое используется по умолчанию для создания URL-адреса.

Другой причиной может быть ваша страница не маршрутизируемая. Параметр маршрутизации для страницы может быть установлен в заголовках страниц.

404 Page Not Found на Nginx⚓︎

Если ваш сайт находится во вложенной папке, убедитесь, что ваш nginx.conf указывает на эту вложенную папку. Образец nginx.conf содержит комментарий в коде, объясняющий, как это сделать.