Задать вопрос
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!');
		}
	}
  • Вопрос задан
  • 7011 просмотров
Подписаться 4 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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);
Ответ написан
Ваш ответ на вопрос

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

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