2017-01-28 2 views
0

Скажем, у меня есть файл test.php, сконфигурированный для обработки Apache 404 ошибок с ErrorDocument 404 /test.phpКак обнаружить скрипт PHP используется как ErrorDocument для 404 Not Found?

Какой PHP код я должен добавить, чтобы проверить, если мы действительно обработки 404, и test.php не было называется напрямую?

Как:

<?php 
if (server_response_code == 404) { 
    echo "It's a 404!" 
} 
?> 

P.S. Там нет 404 пересылки или так ...

+0

Можете ли вы уточнить - хотите ли вы определить код ответа HTTP-запроса, который вы сделали другому серверу с PHP? Похоже, вы хотите получить код ответа для запроса, который вы сейчас обрабатываете, и обычно это будет 200, если вы не переопределите его с помощью заголовка() –

+0

См. Http://stackoverflow.com/questions/408405/easy- way-to-test-a-url-for-404-in-php для проверки удаленных URL-адресов для 404 ответов –

+0

@Paul Dixon Я имею в виду: как проверить, является ли текущий URL-адрес 404 или нет? – user7128548

ответ

1

Один из способов сделать это - просто посмотреть на $_SERVER['REQUEST_URI'] и определить, указывает ли он что-то недействительное.

В то время как ваш пример, вероятно, упрощена на этот вопрос, это может быть столь же просто, как

if ($_SERVER['REQUEST_URI'] != 'test.php') { 
    //we are handling a 404 
    header("HTTP/1.0 404 Not Found"); 
    echo "These aren't the droids you're looking for"; 
} 

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

До тех пор, пока ErrorDocument является относительным URL (не начинается с http://...), То вы должны найти, что ваш скрипт содержит дополнительные переменные $ _SERVER, например.

$_SERVER["REDIRECT_URL"]; // /original/path 
$_SERVER['REDIRECT_STATUS']; // 404 

См ErrorDocument документации для получения более подробной информации.

В качестве альтернативы просто передайте строку запроса arg в обработчик 404, например. ErrorDocument 404 /test.php?error=404 :)

+0

Спасибо, решение заключалось в том, чтобы добавить 'ErrorDocument 404 /? 404 = yes' в мой' .htaccess' и следующее в моем файле: ' '. – user7128548

Смежные вопросы