Задать вопрос
hell0w0rd
@hell0w0rd
Просто разработчик

Установка 404, в случае обращения к файлу?

При запросе к несуществующему файлу, запрос доходит до index.php и с этим надо что-то делать. На сколько правильное следующее решение:
private function process_request()
	{
		$request = strtolower($_SERVER['REQUEST_URI']);
		$query_string = strstr($request, '?');
		if( !empty($query_string) ){
			$request = str_replace($query_string, '', $request);
		}
		$ext = strstr($request, '.');
		$good_ext = array('.php', '.html', '.htm');
		if($ext===false){
			return $request;
		}elseif(in_array($ext, $good_ext)){
			$right_url = str_replace($ext, '', $request);
			$this->redirect($right_url);
		}else{
			$this->set_404();
		}
	}
	private function set_404()
	{
		if( !headers_sent() ){
			header('HTTP/1.1 404 Not Found');
			header('Status: 404 Not Found');
			exit();
		}else{
			Ylog('Headers have been sent!');
		}
	}
	private function redirect($page)
	{
		if( !headers_sent() ){
			header('HTTP/1.1 303 See Other');
			header('Location: '.$page);
			exit();
		}else{
			Ylog('Headers have been sent!');
		}
	}
  • Вопрос задан
  • 7010 просмотров
Подписаться 4 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Skillbox
    PHP-разработчик. Базовый уровень
    3 месяца
    Далее
Решения вопроса 1
@WEBIVAN
Судя по коду все что имеет extension отличный от '.php', '.html', '.htm' должно возвращать 404.
Не понимаю зачем его вообще доводить до php, почему бы его не обрезать на уровне .htaccess?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
akral
@akral
header('HTTP/1.1 404 Not Found');
header('Status: 404 Not Found');
У функции header есть параметер для статуса, не нужно выдумывать свои решения:
header(' ', true, 404);
Ответ написан
Ваш ответ на вопрос

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

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