Доброго времени суток.
Хочу поделиться опытом кастомизации ошибок, которые возникают при тех или иных ситуациях (не найдена страница - 404, нет права на загрузку файла и т.д..).
На то, чтобы это все понять и собрать, ушло у меня около недели), я не ПРО, поэтому выкладываю все своими словами и так, как делал я, "без лишней суеты"..
Пример моей работы:
Где я менял основную страницу:
НЕ ЗАБЫВАЕМ ДЕЛАТЬ БЭКАП!!
1) Первое, что нужно сделать, это настроить общий шаблон в стилях.
Я подпишу каждый момент, который менял, чтобы вам легче было ориентироваться. Вы же все, что подписано - //отступ - у себя уберете, после своих внесении изменений, иначе это все будет видно на сайте.
Код моей страницы:
<section id='elError' class='ipsType_center'> <div class='ipsBox ipsPad'> <br><br> <img class="data-fileid="206" style="width: 115px; height: auto;" src="https:вашсайт//error_pages/error_basic.png"> // ссылка на картинку <br><br> // отступ <p class='ipsType_reset ipsType_light ipsType_large'> {lang="something_went_wrong"} </p> <br><br> // отступ <div id='elErrorMessage' class='ipsPos_center'> {$message|raw} </div> <br> // отступ {{if ( \IPS\IN_DEV or $member->isAdmin() ) and $extra}} {{if $faultyPluginOrApp}} <p class="ipsType_reset ipsType_large ipsPos_center"> {$faultyPluginOrApp} </p> {{endif}} <div class="ipsPad ipsType_left"> <h3 class="ipsType_minorHeading">{lang="error_technical_details"}</h3> <textarea rows="13" style="font-family: monospace;">{$extra}</textarea> <p class="ipsType_small ipsType_light"> {{if $member->isAdmin()}} {lang="error_technical_details_desc"} {{if $member->hasAcpRestriction( 'core', 'support', 'system_logs_view' )}} {lang="error_technical_details_logs"} {{endif}} {{elseif \IPS\IN_DEV}} {lang="error_technical_details_dev"} {{endif}} </p> </div> {{endif}} {{if ( member.isAdmin() and member.hasAcpRestriction( 'core', 'support', 'get_support' ) ) || ( member.canUseContactUs() and !( \IPS\Dispatcher::i()->application->directory == 'core' and \IPS\Dispatcher::i()->module and \IPS\Dispatcher::i()->module->key == 'contact' ) ) || !member.member_id}} <hr class='ipsHr'> <ul class='ipsList_inline'> {{if member.isAdmin() and member.hasAcpRestriction( 'core', 'support', 'get_support' )}} <li> <a href='{url="app=core&module=support&controller=support" base="admin"}' title='{lang="get_support"}' class='ipsButton ipsButton_light ipsButton_medium'> <i class="fa fa-lock"></i> {lang="get_support"} </a> </li> {{elseif \IPS\Member::loggedIn()->canUseContactUs() and !( \IPS\Dispatcher::i()->application->directory == 'core' and \IPS\Dispatcher::i()->module and \IPS\Dispatcher::i()->module->key == 'contact' )}} <li> <a href='{url="app=core&module=contact&controller=contact" seoTemplate="contact"}' title='{lang="contact_admin"}' class='ipsButton ipsButton_light ipsButton_medium'> {lang="contact_admin"} </a> </li> {{endif}} {{if !member.member_id}} <li> <a href='{url="app=core&module=system&controller=login" seoTemplate="login"}' class='ipsButton ipsButton_primary ipsButton_medium' title='{lang="sign_in"}'> {lang="sign_in"} </a> </li> {{endif}} </ul> {{endif}} </div> </section> <br> //отступ <p class='ipsPadding_top ipsType_light ipsType_reset ipsType_small ipsPos_right'> // перемещаем ошибку вниз {lang="error_page_code"} <strong>{$code}</strong> </p> <br><br> //отступ
По сути, можно кастомизировать как угодно, но мне много не надо было, поэтому я сделал себе по простому
2) Правка текста в вкладках.
Поменял текст, который отображается при появлении ошибок 401, 404, 403, 500, ибо логично, когда выдается страница 404, то и в вкладке, должно быть соответствующий текст.
Текст меняется в переводе, это можно сделать из панели АЦ:
3) Для тех, у кого php-fpm и Nginx.
Далее, я обнаружил, что когда открываю страницу, такую как (несуществующую страницу или удаленную) вида - https://site.blablabla.index.php редиректит на:
Я ее заменил на свою страницу (мне показалось, что это куда более правильнее)
Моя страница 404 ошибки, с внутренним css стилем (она же 403)
Если у вас будет такая же ситуация, тогда:
1.1 Создаем в корне вашего сайта, скажем в директории: /html/error_pages, страницу 404.html.
1.2 Немного правим php-fpm и вносим корректировки в:
/etc/nginx/sites-available/ваш конфиг
Добавляем:
try_files $uri = 404;
В каждый раздел location ~ ^(.*\.php)$ {
1.3 Добавляем обращение к самой странице 404 в Nginx
server {
.....
error_page 404 /404.html;
location = /404.html {
root /путь до ПАПКИ с страницами ошибок/html/error_pages;
}
.....
}
}
}
4) Редирект закрытых директорий.
И последний момент, это моя папка с файлами, она у меня была открыта для просмотра, но спустя некоторое время, я решил ее закрыть (файлы естественно все остались доступны для просмотра, а вот сам "серфинг" по ней - нет). Такого рода ошибку 403 не цепляет ни ips4 ни Nginx (по умолчанию), я сделал следующее:
Добавил в Nginx строки (аналогично ошибке 404).
server {
.....
error_page 403 /403.html;
location = /403.html {
root /путь до ПАПКИ с страницами ошибок/html/error_pages;
}
.....
}
}
}
Промучился я не мало, гл вроде все стало выглядеть приятнее)
Всем удачи!
Рекомендуемые комментарии
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.