Код статуса HTTP 301 вместо 404 Есть решение
Подскажите почему может при проверке ответа сервера с адресом несуществующей страницы выдавать Код статуса HTTP 301 вместо 404?
Плагины переадресации пробовал отключать, не помогает.
Подскажите почему может при проверке ответа сервера с адресом несуществующей страницы выдавать Код статуса HTTP 301 вместо 404?
Плагины переадресации пробовал отключать, не помогает.
6 ответов
может в .htaccess переадресация прописана?
Либо включена общая переадресация с http на https, а ответ проверяете на http
Спасибо. Нашёл там вот это:
<ifModule mod_rewrite.c>
RewriteEngine On
# Uncomment the following line, if you are having trouble
#RewriteBase /
RewriteCond %{REQUEST_URI} !\.(js|css|jpg|jpeg|gif|png)$ [or]
RewriteCond %{REQUEST_URI} apple-touch-icon\.png$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
</ifModule>
Похоже здесь что-то лишнее, но что?
нет, это не то.
А сам сайт на https?
Да. Попробовал удалил эти строки и ответ сервера на изменился на 404
Но из этого что-то ведь нужно?
Редирект с https на http сделан так:
RewriteEngine on
RewriteCond %{HTTP:HTTPS} !=on [NC]
RewriteCond %{REQUEST_URI} !robots.txt
RewriteCond %{HTTP_HOST} ^www\.магазин\.ru [NC]
RewriteRule ^(.*)$ https://магазин.ru/$1 [R=301,L]
Но если его убрать, то всё равно вместо 404 выдаёт 301
Нашёл строчку которая мешает:
RewriteCond %{REQUEST_URI} !\.(js|css|jpg|jpeg|gif|png)$ [or]
Если её удалить, то сервер отдаёт код 404.
Но возникает другая проблема. При ошибке 404 открывается серверная страница 404, а не которая error.html в теме оформления.
Как это связано не понятно.
Нашёл ответ. Перенаправление 301 идёт с несуществующей страницы без слеша в конце на страницу со слешэм, а потом уже 404. Так, что вроде всё нормально.