Не могу включить 404 ошибку в категориях

Автор atrisan, 25 января 2019, 12:18:45

« назад - далее »

atrisan

В категориях нет 404 ошибки, если набрать неправильную категорию и в таком случае он по неправильной ссылке покажет корневую категорию.

Можно просто ввести любую ссылку на категорию(например, /catalog/text/  ) и по этой ссылке будет показана самая главная категория.

Должно же быть, что если категория не найдена, то по этой же ссылке должна отобразится страница с 404 ошибкой и http status 404 , а по факту http status 200.

Установлен модуль v2.1.1-fsadvancedurl

В настройках есть пункт:
Category not found redirect type:
Выбрал значение No redirect

Кто сталкивался с этой проблемой?
Как решили?

Adik

Apache или Ngnix у вас?
404 ошибку в конф.веб сервера устанавлиют, если nginx.

atrisan

Цитата: Adik от 25 января 2019, 13:52:48
Apache или Ngnix у вас?
404 ошибку в конф.веб сервера устанавлиют, если nginx.
Apache

Виталий

#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404

в htaccess правила редиректа на 404 ошибку
Cоздание интернет сайтов Webstudio UwK

atrisan

Цитата: Виталий от 25 января 2019, 16:00:00
#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404

в htaccess правила редиректа на 404 ошибку

эта запись итак есть.

Проблема только с категориями товаров.
Если перейти по неправильной ссылке на товар то срабатывает редирект на страницу page_not_found,
тоже как то странно, что 404 не по неправильной ссылке показывается.

А с обычными страницами нет никаких проблем, показывает 404 сразу при вводе неправильной ссылки.

Похоже модуль надо переписывать advanvedurl

atrisan

#5
решилось все дописыванием дополнительного условия в CategoryController  в методе init()

Было так:


if (!Validate::isLoadedObject($this->category) || !$this->category->active  )
{
     Tools::redirect('index.php?controller=404');
}


Стало так:


if (!Validate::isLoadedObject($this->category) || !$this->category->active || ( $this->category->link_rewrite != "" && $_SERVER['REQUEST_URI'] != "/catalog/".$this->category->link_rewrite."/" )  )
{
     Tools::redirect('index.php?controller=404');
}



Разочаровался конечно в prestashop, что несуществующая страница отдает статус 302 и редиректит на 404 страницу.   :o :o :o :o :o :o :o :o :o

Как отдать статус 404 без редиректов?

Миколас

"/catalog/" - это откуда?
Если меняешь правила чпу по своим запросам, то и правила редиректа меняй.

atrisan

Цитата: Миколас от 08 февраля 2019, 14:42:05
"/catalog/" - это откуда?
Если меняешь правила чпу по своим запросам, то и правила редиректа меняй.
Настроил с помощью advancedurl.

Но редирект идет на уровне самой престы.
Как сделать чтобы отдавал статус без редиректов?

Adik

В стандартном пакете prestashop, без всяких модулей, 404 ошибку обрабатывает без проблем.
В модуле нужно копаться, в нем причина. В тех поддержку модуля напишите,  может они уже исправили проблему.