Как исправить статус ответа заголовка Codeigniter 404 с правильным ответом контроллера? - PullRequest
1 голос
/ 06 июля 2019

У меня есть проект codeigniter, который возвращает только в некоторых случаях ответ заголовка 404, но с ответом контроллера.

Проблема влияет на оценку SEO и не загружается страница в браузерах Microsoft.

Свой Codeigniter 3.0.3 на экземпляре сервера cloudways с apache PHP 5.6.Я пытаюсь исправить измененные правила htaccess (я новичок в этом) и принудительно устанавливаю статус заголовка 200 перед выполнением кода представления загрузки, но статус заголовка не изменяется.

ИНФОРМАЦИЯ О КОДЕ

Это его .htaccess ::

<IfModule mod_rewrite.so>
   RewriteEngine On

   RewriteCond $1 !^(index\.php|images|stylesheets|javascript)
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-l
   RewriteRule ^(.*) /index.php/$1 [L]
   RewriteRule ^uploadify/.*$ - [PT]
   RewriteRule ^uploads/.*$ - [PT]

</IfModule>

<IfModule !mod_rewrite.so>
      ErrorDocument 404 /index.php
</IfModule>

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

rout.php фрагмент:

$route['default_controller']        = 'apply'; // working
$route['apply-mortgage']            = 'apply/mortgage';  // not working

Те же функции (индекс и заклад) возвращают соответствующие представления с тем же кодом:

 $this->load->view();

Я также включаю MY_CONTROLLER:

class MY_Controller extends CI_Controller {
  public function _remap($method, $params = [])
  {
    if (method_exists($this, $method)) {
      $response = $this->$method(...$params);
      if ($response === null) {
        $response = Response::LAST();
      }
      if ($response instanceof stdClass || in_array(gettype($response), ['array', 'boolean', 'double', 'integer'])) {
        $response = Response::json($response);
      } elseif (is_string($response)) {
        $response = Response::html($response);
      }
      if ($response instanceof Response) {
        $response->output();
        exit;
      }
      if (isset($response)) return $response;
    }
    show_404();
  }
}

ОТВЕТ БРАУЗЕРА

Фактический ответ на заголовок консоли браузера (вкладка сеть)

:status: 404
Content-Type: text/html; charset=UTF-8
Pragma: no-cache
. . .

Предварительный просмотр (вкладка «Сеть»). Ответ на запрос возврата в функции контроллера:

<!doctype html>
<html lang="en">
<head>
...

Мне нужно, чтобы статус ответа в заголовке возвращался 200

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...