У меня есть проект 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