За последние 24 часа нас посетили 55407 программистов и 1793 робота. Сейчас ищут 780 программистов ...

Вызвать ошибку 404

Тема в разделе "PHP для новичков", создана пользователем anempadest, 25 июл 2016.

  1. anempadest

    anempadest Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    Думаю, что тема о том как программно вызвать ошибку 404 поднималась уже давно. Но ответа на свой вопрос ни на этот форуме, ни в поисковых системах я не нашёл.

    Нужно вызвать ошибку 404.

    Вот мой .htaccsess.
    Код (Text):
    1. Options -Indexes
    2. ErrorDocument 404 /error/404.php
    3.  
    4. RewriteEngine ON
    5. RewriteCond %{REQUEST_FILENAME} !-f
    6. RewriteCond %{REQUEST_FILENAME} !-d
    7. RewriteRule . index.php

    А это мой INDEX.PHP, который собирает сайт.

    PHP:
    1. <?php
    2. //url
    3. $url = $_SERVER['REQUEST_URI'];
    4. $url = trim($url, '/');
    5. //path
    6. $path = empty($url) ? 'show' : $url;
    7. $path = 'include/' . $path . '.php';
    8. //content
    9. if (is_readable($path)) {
    10.     include($path);
    11. } else {
    12.     header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found', TRUE);
    13.     header("Status: 404 Not Found");
    14.     exit();
    15.     //include('error/404.php');
    16. };
    17. ?>

    Вот именно с таким кодом на экране появляется просто пустая страница. Если закомментить exit() и раскомментить include('error/404.php'), то на экране появляется моя настроенная страничка с извещением об ошибке 404, но сервер извещения об ошибке 404 не получает.

    Как побороть?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Покажи поисковые запросы. Тема отлично гуглится и яндексится.
     
  3. anempadest

    anempadest Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    Да, топиков на эту тему создано не мало. Но ответа нет. Или, скажем, так, у меня не получается. Прошу помочь.

    А какие поисковые запросы показать?
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Поисковые запросы по которым ты не находишь нужного материала. Ну теперь еще и ссылки по которым не написано ответа.
     
  5. anempadest

    anempadest Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    Цели у меня две:
    1) Получать сообщения об отсутствующих страницах.
    2) Показать поисковому боту, что страницы нет.

    Первую задачу я решил.
    PHP:
    1. <?
    2. $title = "Страница не найдена";
    3. $description = "Страница не найдена";
    4. $keywords = "страница не найдена";
    5. //тело
    6. $body = "<html><head><title>Ошибка 404</title>";
    7. $body .= "<style>table {border-collapse: collapse;}table td {border: 1px silver solid;padding: 5px;vertical-align:top;}</style>";
    8. $body .= "</head><body>";
    9. $body .= "<h1>Ошибка 404</h1><table>";
    10. //данные
    11. $a = array();
    12. $a['REQUEST_URI'] = $_SERVER['REQUEST_URI'];
    13. $a['QUERY_STRING'] = $_SERVER['QUERY_STRING'];
    14. $a['HTTP_REFERER'] = $_SERVER['HTTP_REFERER'];
    15. $a['HTTP_USER_AGENT'] = $_SERVER['HTTP_USER_AGENT'];
    16. $a['REQUEST_TIME'] = date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']);
    17. $a['REMOTE_ADDR'] = $_SERVER['REMOTE_ADDR'];
    18. //вывести
    19. foreach ($a as $key => $value) {
    20.     $body .= "<tr><td>$key</td><td>$value</td></tr>";
    21. };
    22. $body .= "</table></body></html>";
    23. //сообщение
    24. $to = 'info@post.com';
    25. $subject = "Ошибка 404";
    26. $headers = "Content-type: text/html; charset=utf-8";
    27. //отправка
    28. $answer = mail($to, $subject, $body, $headers);
    29. ?>
    30. <h1>Страница не найдена</h1>
    31. <p>Запрашиваемая страница '<? echo $_SERVER['REQUEST_URI']; ?>' не найдена!</p>

    Но меня больше беспокоит, как показать поисковому боту, что страница больше не существует.
    Нет, можно, конечно, в HTACCESS явно прописать, что данная страница отсутствует. Но я хочу реализовать такой функционал через ErrorDicument и ошибку 404.
    --- Добавлено ---
    У меня не работает:
    http://aermolenko.ru/2012/02/vy-zov-oshibki-404-sredstvami-php/
    http://searchengines.guru/showthread.php?t=798697
    http://www.cyberforum.ru/php/thread799441.html

    А здесь решения так и не нашли:
    http://www.programmersforum.ru/showthread.php?t=105783&page=2

    Больше не хочу копировать сюда всю выдачу Яндекса
    https://yandex.ua/search/?text=вызвать ошибку 404&from=os&clid=1836588&lr=143
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Ну. На первой странице выдачи есть тот самый заголовок, который нужно отправить. И первая же ссылка рассказывает об личном опыте - попытку затолкать заголовок после того как началась отдача тела.
    Кстати на почту отправлять - не самая хорошая идея.
     
  7. anempadest

    anempadest Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    Свой INDEX.PHP я выложил. По-вашему, я заталкиваю заголовок после начала выведения?

    В чём ошибка и какие есть варианты лучше?
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Ошибка в идее. Есть ботнеты, которые занимаются перебором популярных дырявых адресов. На каждый хит от бота ты будешь получать письмо. У меня не так давно на одном сайте было аж 16 тысяч хитов в несуществующие страницы за одну неделю. Это бы создало почтовый трафик объемом чуть более чем 2000 писем в сутки. На изучение такого небольшого объема корреспонденции ушло бы какое-то время. И это только по урлам одного сайта. А другую почту когда читать? Это раз.
    Два: а что тебе эти письма дадут-то? У тебя есть есть журнал сервера, в котором пишется урл и статус ответа. Даже когда ты статус устанавливаешь в пхп - вебсервер все равно его видит и может успешно положить в журнал. Анализируй журналы раз в [период], если уж очень нужно.
    Ну и третье. Если ты удаляешь существующий элемент, то намного лучше организовать некоторое хранилище, в которое веб-сервер сходит без участия пхп-машины. Если там что-то найдет - ответит скорбью по убитому ресурсу - 404 или 410. А если не найдет - запустит пхп-машину и та уже другими алгоритмами будет разрешать запрос.
    --- Добавлено ---
    Сделай запрос к несуществующей странице и загляни в журнал веб-сервера. Если там на этот хит стоит статус 404 то всё ты сделал правильно.
     
  9. anempadest

    anempadest Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    А я о том и говорю! Сервер не видит ошибку! Поэтому в журнале пусто.
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Может убрать ErrorDocument ?
     
  11. anempadest

    anempadest Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    Попробовал - не помогло. В журнале ошибок ничего нет.
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Давай полную конфигурацию хоста. Будем пробовать у себя сэмулировать.
     
  13. anempadest

    anempadest Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    Это какие данные?
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Это вся конфигурация веб-сервера, которая может влиять на разрешение запроса. Весь каталог /etc/apache2, какие-то тонкие примеси, если такие есть. И естественно конфиг самого виртуального хоста.
     
  15. anempadest

    anempadest Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    При всём моём уважении, ваш метод решения моей проблемы напоминает мне случай из анекдота, когда мужик пришёл в магазин за туалетной бумагой, а продавец потребовал его принести в магазин унитаз, чтобы туалетную бумагу правильно подобрать.

    Я думаю, вам достаточно будет знать, что если из .HTACCESS убрать это:
    Код (Text):
    1. RewriteEngine ON
    2. RewriteCond %{REQUEST_FILENAME} !-f
    3. RewriteCond %{REQUEST_FILENAME} !-d
    4. RewriteRule . index.php
    то ошибка 404 вызывается и запись в журнале ошибок на сервере создаётся.

    Свои htaccess и index.php я вам дал. Воссоздать мой случай вы сможете. Если вы повторите мою конфигурацию и скажете, что у вас ошибка 404 вызывается, тогда я изменю своё мнение.
     
  16. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Да, но нет. Ты пришел сюда с аксесом, в который роутишь все запросы в индекс-пхп. И внутри этого индекса ты разруливаешь есть ресурс или нет ресурс. Код у тебя вполне рабочий. Почему не работает - мне отсюда не видно. И я хотел на своем хосте поднять аналог твоего и поближе рассмотреть логику конфигурации. Ты же просто тупо убрал правила рерайтера, которые сваливают все отсутствующие ресурсы на индекс-пхп. И естественно у веб-сервера нет кандидатов и на разрешение запроса и он выкидывает статус 404. "Решение" кардинально меняет условие задачи. Ну если тебе так норм, то ок. Пример с унитазом тут вообще не в кассу.
     
  17. anempadest

    anempadest Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    ОК. Ты можешь создать на своём хостинге сайт, в который поместишь мой index.php и .htaccsess?
    Если у тебя заработает ошибка 404, то скажи.
    Не нужно копаться в настройках сервера. Просто залей на свой пустой хостинг мои два файла и проверь.

    Цель - чтобы сервер выдал ошибку 404.
     
    #17 anempadest, 25 июл 2016
    Последнее редактирование: 25 июл 2016
  18. anempadest

    anempadest Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    Скажу больше.
    Я в index.php оставил только это:
    Код (Text):
    1. <?
    2. header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found', TRUE);
    3. header("Status: 404 Not Found");
    4. ?>
    Сервер ошибку 404 не выдал.
     
  19. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    lastdays нравится это.
  20. anempadest

    anempadest Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    Думаю, вместо кейсов было бы красивее прописать это в виде ассоциативного массива...
    Ну и что, что ты мне показал красивую страничку? Мне, как ТС, ты помог? Или только сам выпендрился?
    Запись об ошибке 404 у тебя в журнале ошибок на сервере создалась?
    Страничка с ошибкой у тебя вывелась сервером через ErrorDocument или через INCLUDE в INDEX.PHP?
    Процедуру HEADER() ты запускал? Она сработала?

    Тут на форуме есть другие специалисты по запуску ошибки 404?
     
  21. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Ты на логику работы с заголовками смотри, а не на стиль программирования. Тебе дали рабочий пример.

    Ну ты поменял на переправе условия задачи поэтому мне честно наплевать помог я тебе или не помог. Я сделал рабочий скрипт, который показывает страницу, сопровождая её выбранным статусом.

    Прилагаю фрагмент журнала веб-сервера (айпишники скрыл):
    Код (Text):
    1. 0.0.0.0 - - [26/Jul/2016:00:39:14 +0300] "GET /ru.php/59329/ HTTP/1.0" 404 5648 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/50.0.2661.102 Chrome/50.0.2661.102 Safari/537.36" 508 5793
    2. 0.0.0.0 - - [26/Jul/2016:00:40:01 +0300] "GET /ru.php/59329/?status=400 HTTP/1.0" 400 5652 "http://lab.ganzal.com/ru.php/59329/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/50.0.2661.102 Chrome/50.0.2661.102 Safari/537.36" 565 5799
    3. 0.0.0.0 - - [26/Jul/2016:00:40:04 +0300] "GET /ru.php/59329/?status=403 HTTP/1.0" 403 5648 "http://lab.ganzal.com/ru.php/59329/?status=400" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/50.0.2661.102 Chrome/50.0.2661.102 Safari/537.36" 576 5793
    4. 0.0.0.0 - - [26/Jul/2016:00:40:04 +0300] "GET /ru.php/59329/?status=403 HTTP/1.0" 403 5648 "http://lab.ganzal.com/ru.php/59329/?status=400" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/50.0.2661.102 Chrome/50.0.2661.102 Safari/537.36" 576 5793
    5. 0.0.0.0 - - [26/Jul/2016:00:40:11 +0300] "GET /ru.php/59329/?status=404 HTTP/1.0" 404 5648 "http://lab.ganzal.com/ru.php/59329/?status=403" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/50.0.2661.102 Chrome/50.0.2661.102 Safari/537.36" 576 5793
    6. 0.0.0.0 - - [26/Jul/2016:00:40:11 +0300] "GET /ru.php/59329/?status=404 HTTP/1.0" 404 5648 "http://lab.ganzal.com/ru.php/59329/?status=403" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/50.0.2661.102 Chrome/50.0.2661.102 Safari/537.36" 576 5793
    7. 0.0.0.0 - - [26/Jul/2016:00:54:59 +0300] "GET /ru.php/59329/ HTTP/1.0" 404 5648 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36" 475 5793
    8. 0.0.0.0 - - [26/Jul/2016:00:57:25 +0300] "GET /ru.php/59329/ HTTP/1.0" 404 5648 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0" 364 5793
    9. 0.0.0.0 - - [26/Jul/2016:00:57:41 +0300] "GET /ru.php/59329/?status=404 HTTP/1.0" 404 5648 "http://lab.ganzal.com/ru.php/59329/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36" 532 5793
    10. 0.0.0.0 - - [26/Jul/2016:01:12:37 +0300] "GET /ru.php/59329/ HTTP/1.0" 404 5648 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" 458 5793
    11. 0.0.0.0 - - [26/Jul/2016:02:54:10 +0300] "GET /ru.php/59329/ HTTP/1.0" 404 5648 "-" "Mozilla/5.0 (Windows NT 5.1; rv:43.0) Gecko/20100101 Firefox/43.0" 398 5793
    12. 0.0.0.0 - - [26/Jul/2016:03:09:28 +0300] "GET /ru.php/59329/ HTTP/1.0" 404 5648 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36" 475 5793
    13. 0.0.0.0 - - [26/Jul/2016:03:25:29 +0300] "GET /ru.php/59329/ HTTP/1.0" 404 5648 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41" 482 5793
    14. 0.0.0.0 - - [26/Jul/2016:03:25:36 +0300] "GET /ru.php/59329/?status=503 HTTP/1.0" 503 5668 "http://lab.ganzal.com/ru.php/59329/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41" 539 5823
    15. 0.0.0.0 - - [26/Jul/2016:03:25:37 +0300] "GET /ru.php/59329/?status=502 HTTP/1.0" 502 5652 "http://lab.ganzal.com/ru.php/59329/?status=503" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41" 550 5799
    16. 0.0.0.0 - - [26/Jul/2016:03:25:37 +0300] "GET /ru.php/59329/?status=500 HTTP/1.0" 500 5672 "http://lab.ganzal.com/ru.php/59329/?status=502" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41" 550 5829
    17. 0.0.0.0 - - [26/Jul/2016:03:25:38 +0300] "GET /ru.php/59329/?status=410 HTTP/1.0" 410 5638 "http://lab.ganzal.com/ru.php/59329/?status=500" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41" 550 5778
    18. 0.0.0.0 - - [26/Jul/2016:03:25:39 +0300] "GET /ru.php/59329/?status=404 HTTP/1.0" 404 5648 "http://lab.ganzal.com/ru.php/59329/?status=410" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41" 550 5793
    19. 0.0.0.0 - - [26/Jul/2016:03:25:40 +0300] "GET /ru.php/59329/?status=403 HTTP/1.0" 403 5648 "http://lab.ganzal.com/ru.php/59329/?status=404" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41" 550 5793
    20. 0.0.0.0 - - [26/Jul/2016:03:25:40 +0300] "GET /ru.php/59329/?status=404 HTTP/1.0" 404 5648 "http://lab.ganzal.com/ru.php/59329/?status=403" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41" 550 5793
    21. 0.0.0.0 - - [26/Jul/2016:03:25:41 +0300] "GET /ru.php/59329/?status=400 HTTP/1.0" 400 5652 "http://lab.ganzal.com/ru.php/59329/?status=404" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41" 550 5799
    22. 0.0.0.0 - - [26/Jul/2016:03:27:24 +0300] "GET /ru.php/59329/ HTTP/1.0" 404 5648 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" 655 5793
    23. 0.0.0.0 - - [26/Jul/2016:03:31:13 +0300] "GET /ru.php/59329/?status=404 HTTP/1.0" 404 5648 "http://lab.ganzal.com/ru.php/59329/?status=400" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41" 550 5793
    24. 0.0.0.0 - - [26/Jul/2016:03:31:13 +0300] "GET /ru.php/59329/?status=403 HTTP/1.0" 403 5648 "http://lab.ganzal.com/ru.php/59329/?status=404" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41" 550 5793
    25. 0.0.0.0 - - [26/Jul/2016:03:31:14 +0300] "GET /ru.php/59329/?status=400 HTTP/1.0" 400 5652 "http://lab.ganzal.com/ru.php/59329/?status=403" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41" 550 5799
    26. 0.0.0.0 - - [26/Jul/2016:09:46:40 +0300] "GET /ru.php/59329/ HTTP/1.0" 404 5648 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36" 475 5793
    Если ты внимательно прочитаешь код, то увидишь конструкцию, которая подсвечивает синтаксис самого файла. То есть весь код, который ты видишь на страничке - и есть код, который обработал запрос. Рекурсия.

    Почитай выше про самоподсвечивание синтаксиса и изучи внимательно исходный код. Там есть функция header()? Нашел? Ответил себе на вопрос?

    Рад что не помог тебе. Ну хоть развлекся. Про унитазы послушал от опытного человека.
     
  22. anempadest

    anempadest Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    Рад, что помог тебе выпендриться. Но мне ты не помог. Знаю, что модераторов критиковать нельзя, но я сомневаюсь, что ты правильно понимаешь своё предназначение на форуме. И кстати. Раздел называется "Для новичков".
    Надеюсь, я свою проблему решу. А тебе - минус в карму.
     
  23. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Ты пришел сюда с вопросом - я начал тебе помогать. Как мы выяснили, решение легко гуглится. Копипаст и всё работает.

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

    Я попросил конфу сервера - ты мне рассказал про унитазы. Имея немногим больший опыт работы с веб-серверами, я вполне мог найти причину, по которой не работает решение из пункта один.

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

    Потом ты усомнился с журналированием статуса веб-сервером - я предоставил тебе логи. Видно, что были люди, которые прокликали по разным статусами. И веб-сервер записал лог именно с тем статусом, который видно в урле. Ты же (подозреваю что в 9:46 было твое посещение) просто разок открыл страницу. Сомневаюсь, что у тебя в этот момент были открыты инструменты разработчика, и что ты смог заметить, что браузеру пришел ответ со статусом 404. Ты поспешил как можно быстрее начать рассказывать мне про синтаксис.

    Сомневаюсь, что твои претензии хоть сколько-нибудь обоснованы. Ну либо ты вечная обиженка, поэтому с тобой невозможно вести конструктивный диалог.

    Удачи тебе с решением твоей проблемы.
     
  24. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Ознакомился тут с парочкой исторических тредов. Это было легко, ведь у тебя всего 40 сообщений за 4 года.
    https://php.ru/forum/threads/ostanovite-menja.37729/
    https://php.ru/forum/threads/iskljuchenie-dlja-massiva.53954/

    Ты как был мурмудоном, так им и остался. Не удивлён, что ты на меня наехал в этой теме. У тебя просто проблемы не с пхп и возвратом статуса, а с головушкой. А значит других проблем не существует.
    Так что удачи тебе теперь уже просто по жизни.
     
  25. anempadest

    anempadest Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    Послушай, Сергей.
    Я не исключаю, что в PHP мои познания малы, технологию работы веб-серверов я вообще не знаю. Одним словом, я - новичок. Поэтому задаю вопрос и вообще веду себя так, как могу.

    Мой вопрос не меняется. Я не могу найти ответ уже больше недели. Процедура HEADER() на моём сервере ошибку 404 не выдаёт.

    Конфигурацию сервера я дать тебе не могу: я просто не знаю, где и как её брать. По сложности исполнения твоей просьбы для меня это сравнимо с принесением в магазин унитаза, если я хочу купить всего-то туалетную бумагу. И главное - я не понимаю, зачем. Сейчас, кстати, задал вопрос в службу поддержки - ищут.

    Про твой красивый файл с ошибками... В качестве достаточного ответа на свой вопрос я бы принял одну фразу "Вызывай HEADER не в INDEX.PHP, а в файле 404.PHP". То, что у тебя на сервере процедура HEADER выполнилась, я не сомневался. И для меня нет никакой пользы от того, что у тебя всё работает правильно, потому что у меня твой копи-паст не работает.

    Моё замечание по ассоциированному массиву - это мой ответ на твою ненужную мне красоту в предоставленном файле генерации ошибок.

    Моя проблема не решена.