@SpeNch

Почему ошибка php?

писал программу на компе , с простым маршрутизатором
и все было ок все файлы грузились и сайт полностью работал
php: index.php
<?php
try {
    // берем переданный роут
    $route = trim($_REQUEST['route']??'index');

    // проверяем, если в конце слеш, то это index роут
    if (substr($route,'-1') == '/') $route.='index';

    // минимальная защита от инклуда неожидаемых файлов
    // ограничиваем имена до символов a-b, 0-9, тире, нижнее подчеркивание и слеш
    if (!preg_match('~^[-a-z0-9/_]+$~i', $route)) throw new Exception('Not allowed route');

    // генерим путь к файлу
    $filePath = dirname(__FILE__).'/pages/'.$route.'.php';

    // если не существует выкидываем ошибку
    if (!file_exists($filePath)) throw new Exception('Route not found');

    // если существует, инклудим файл
    include $filePath;
} catch (Throwable $ex) {
    // в случае любых ошибок, показываем 404
    // тут обычно делают разные типы эксепшенов и разделяют 400 и 500 ошибки
    include dirname(__FILE__).'/pages/404.php';
}


файл .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?route=$1 [QSA,L]


Но когда я загрузил мой сайт на сервер он продолжал роботать но перестал выводить некоторые картинки:
по такому адресу от отдает картинку
SiteImage/Materials/Artist/Elena_Naydenova/DSCF6350.jpg

а по такому, сколько бы я раз не перезагружал от отдает 404 файл от php,
SiteImage/Materials/Artist/Shinaarenok_Nadezhda_Vladimirovna/DSCF6336.JPG


может дело в моем хостинге или в самом файле index.php? подскажите (сама картинка по такому адресу существует просто php отдает 404 файл)
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
glaphire
@glaphire Куратор тега PHP
PHP developer
if (!preg_match('~^[-a-z0-9/_]+$~i', $route)) throw new Exception('Not allowed route');

Регулярка не включает в себя буквы верхнего регистра, а примеры урлов в вопросе имеют буквы верхнего регистра
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы