Проверка URL на существование

Тема в разделе "Как сделать...", создана пользователем NightHunter, 8 сен 2019.

Метки:
  1. NightHunter

    NightHunter Экзорцист

    Регистр.:
    25 фев 2014
    Сообщения:
    721
    Симпатии:
    960
    Всем привет. Народ, есть проблема, над которой сижу уже долгое время...Есть самописный сайт (не мной сделан), в котором некоторые страницы, не отдают 404.
    Например site.ru/price/несуществующий урл - не отдаёт 404.

    У меня есть код:


    Он то по сути рабочий, но он дублирует шапку сайта и лишь потом, выводит 404.php т.е. отдельно, а не заменяет полностью страницу + он ещё и саму страницу "price" показывает в 404.
    Мне нужен код, который будет из таблицы, вытягивать название урл, сравнивать с тем, что есть и если юзер ввёл направильный урл, то чтобы он выкидывал 404, есть нюанс, с которым столкнулся - на сайте есть статические страницы, урл которых нет в БД и поэтому я при решении данной проблемы, даже если её решал частично, получал 404 на других страницах.
    P.S. Полный код страниц, могу предоставить, если надо будет.
     
  2. Албибеков

    Албибеков Создатель

    Регистр.:
    24 июн 2016
    Сообщения:
    15
    Симпатии:
    6
  3. hydropericardium

    hydropericardium Постоялец

    Регистр.:
    20 июн 2018
    Сообщения:
    74
    Симпатии:
    20
    1. в 404.php просто уже инклюдится шапка, просто удали ее из шаблона 404.
    2. Добавь что это не страница /price/, что-то вроде
    Код:
    if ($_SERVER['REQUEST_URI'] != '/price/')
     
    NightHunter нравится это.
  4. NightHunter

    NightHunter Экзорцист

    Регистр.:
    25 фев 2014
    Сообщения:
    721
    Симпатии:
    960
    Гляну, спасибо. А можно как-то сравнить урл? Из БД я вытягиваю ссылку и сравнивать её с той, что ввёл юзер? Я просто никогда подобного не делал и поэтому нет опыта в этом. Пробовал делать сравнение, но ничего не получалось.
    Например вот так делал (код уже немного костыльный, пробовал исправлять:(
     
  5. hydropericardium

    hydropericardium Постоялец

    Регистр.:
    20 июн 2018
    Сообщения:
    74
    Симпатии:
    20
    Ну то что я кинул, как раз проверяет урл,
    $_SERVER['REQUEST_URI'] -отдает все после доменного имени без get запросов.
    В каком виде у вас лежат ссылки я не знаю.
     
    NightHunter нравится это.
  6. sempais8

    sempais8 Писатель

    Регистр.:
    18 окт 2015
    Сообщения:
    1
    Симпатии:
    1
    Тогда уже лучше проверять так:

    Код:
    if (isset($_SERVER['REQUEST_URI']) && stristr($_SERVER['REQUEST_URI'], '/price/') !== false) {
        страница 'price' существует!
    } else {
        header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404);
        include("404.php");
        die();
    }
    
     
    NightHunter нравится это.