Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

не отдает 404 при вводе несуществующей страницы пагинации


Recommended Posts

всем привет ..Подскажите ,как реализовать ,чтобы  при вводе несуществующей страницы пагинации , отдавало 404 ,а не 200й ответ ? (или подскажите в каком файле искать)
на данный момент в категории магазина  10 страниц , но стоит мне в ручную  написать в адресную строку любую большую цифру , как ответ 200,но  пишет ,что товара нет в этой категории 

Надіслати
Поділитися на інших сайтах


А зачем руками подставлять?

Но конечно же можно все...

В контроллере проверять  наличие несуществующей страницы и вызывать not_found

Надіслати
Поділитися на інших сайтах

А зачем руками подставлять?

Но конечно же можно все...

В контроллере проверять  наличие несуществующей страницы и вызывать not_found

Я бы уточнил: проверять количество записей в категории и тогда вызывать $this->getChild('error/not_found');  и addHeader(...404) если их ноль и есть && isset($this->request->get['page'])

Кстати не мешало бы в ocStore такое добавить

  • +1 1
Надіслати
Поділитися на інших сайтах

  • 2 weeks later...

всем привет ..Подскажите ,как реализовать ,чтобы  при вводе несуществующей страницы пагинации , отдавало 404 ,а не 200й ответ ? (или подскажите в каком файле искать)

на данный момент в категории магазина  10 страниц , но стоит мне в ручную  написать в адресную строку любую большую цифру , как ответ 200,но  пишет ,что товара нет в этой категории 

Добрый день. Мне помогло вот это: В файле /catalog/controller/error/not_found.php после строки public function index() { вставляем

//                            $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found');

                               header("HTTP/1.1 404 Not Found");

Вот код в мое файле:

<?php   

class ControllerErrorNotFound extends Controller {
public function index() {
// $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found');
header("HTTP/1.1 404 Not Found");
Надіслати
Поділитися на інших сайтах


 

Добрый день. Мне помогло вот это: В файле /catalog/controller/error/not_found.php после строки public function index() { вставляем

//                            $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found');

                               header("HTTP/1.1 404 Not Found");

Вот код в мое файле:

<?php   

class ControllerErrorNotFound extends Controller {
public function index() {
// $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found');
header("HTTP/1.1 404 Not Found");

 

 

Так дело в том что not_found даже вызываться не будет (посмотрите первый пост)  :)

Надіслати
Поділитися на інших сайтах

  • 4 years later...

Что то типа того

 

        if ($page < 1 || $page > ceil($product_total / $limit)) {
            $this->document->setTitle($this->language->get('text_error'));
            $data['heading_title'] = $this->language->get('text_error');
            $data['text_error'] = $this->language->get('text_error');
            $data['button_continue'] = $this->language->get('button_continue');
            $data['continue'] = $this->url->link('common/home');
            
            $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found');
                
            $data['column_left'] = $this->load->controller('common/column_left');
            $data['column_right'] = $this->load->controller('common/column_right');
            $data['content_top'] = $this->load->controller('common/content_top');
            $data['content_bottom'] = $this->load->controller('common/content_bottom');
            $data['footer'] = $this->load->controller('common/footer');
            $data['header'] = $this->load->controller('common/header');            
                
            $this->response->setOutput($this->load->view('information/not_found', $data));
        } else {
            $this->response->setOutput($this->load->view('product/category', $data));
        } 

Надіслати
Поділитися на інших сайтах

  • 1 year later...
В 26.05.2019 в 01:52, zomo сказал:

Что то типа того

 

        if ($page < 1 || $page > ceil($product_total / $limit)) {
            $this->document->setTitle($this->language->get('text_error'));
            $data['heading_title'] = $this->language->get('text_error');
            $data['text_error'] = $this->language->get('text_error');
            $data['button_continue'] = $this->language->get('button_continue');
            $data['continue'] = $this->url->link('common/home');
            
            $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found');
                
            $data['column_left'] = $this->load->controller('common/column_left');
            $data['column_right'] = $this->load->controller('common/column_right');
            $data['content_top'] = $this->load->controller('common/content_top');
            $data['content_bottom'] = $this->load->controller('common/content_bottom');
            $data['footer'] = $this->load->controller('common/footer');
            $data['header'] = $this->load->controller('common/header');            
                
            $this->response->setOutput($this->load->view('information/not_found', $data));
        } else {
            $this->response->setOutput($this->load->view('product/category', $data));
        } 

почти рабочий вариант. только если зайдешь в пустую категорию - вылезет ошибка Категория не найдена

как вариант, можно условие на такое заменить

if ($product_total && ($page < 1 || $page > ceil($product_total / $limit))) {

 

Надіслати
Поділитися на інших сайтах

  • 1 month later...
В 26.05.2019 в 02:52, zomo сказал:

Что то типа того

 

        if ($page < 1 || $page > ceil($product_total / $limit)) {
            $this->document->setTitle($this->language->get('text_error'));
            $data['heading_title'] = $this->language->get('text_error');
            $data['text_error'] = $this->language->get('text_error');
            $data['button_continue'] = $this->language->get('button_continue');
            $data['continue'] = $this->url->link('common/home');
            
            $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found');
                
            $data['column_left'] = $this->load->controller('common/column_left');
            $data['column_right'] = $this->load->controller('common/column_right');
            $data['content_top'] = $this->load->controller('common/content_top');
            $data['content_bottom'] = $this->load->controller('common/content_bottom');
            $data['footer'] = $this->load->controller('common/footer');
            $data['header'] = $this->load->controller('common/header');            
                
            $this->response->setOutput($this->load->view('information/not_found', $data));
        } else {
            $this->response->setOutput($this->load->view('product/category', $data));
        } 

Извиняюсь, а куда конкретно это добавить ?

Надіслати
Поділитися на інших сайтах


  • 4 months later...

Я добавил редирект с несуществующих page=

/catalog/controller/product/category.php

       //301 from not page=
      if ($product_total && ($page < 1 || $page > ceil($product_total / $limit))) {
          header('Location: ' . $this->url->link('product/category', 'path=' . $category_info['category_id'], true), true, 301);
          exit();
      }
      else { }
           //301 from not page=

 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.