Автор Тема: страница 404  (Прочитано 228 раз)

24 Июнь 2022, 16:41:07
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день, как сделать , чтобы  при попытке открыть несуществующую страницу - пользователю должен сразу отдаваться 404 код ответа (без переадресации), а также выводиться сообщение о том, что страница не найдена. Сейчас же происходит переадресация на страницу /page-not-found
25 Июнь 2022, 10:58:10
Ответ #1
  • Фрилансер
  • *
  • Сообщений: 135
  • Репутация: +2/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В файле htaccess закоментируйте или удалите правило
#ErrorDocument 404 /index.php?controller=404
01 Июль 2022, 11:53:28
Ответ #2
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
сделала, очистила кеш, все равно перенаправляет
01 Июль 2022, 16:12:27
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 16557
  • Репутация: +14628/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Хостинг какой?
02 Июль 2022, 10:44:02
Ответ #4
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Хостинг Украина
02 Июль 2022, 10:51:07
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 16557
  • Репутация: +14628/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Свой сервер или шаринг? Кеш сервера нужно сбросить, перегзапустить сервер после измений.
02 Июль 2022, 10:55:52
Ответ #6
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
удаляя 404.tpl в шаблоне 500 ошибка, где отключить это перенаправление, уже где только можно переискала
02 Июль 2022, 10:57:00
Ответ #7
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
шаринг все кеши очищаю постоянно, все оптимизации отключены на хостинге
02 Июль 2022, 10:57:49
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 22109
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Добрый день, как сделать , чтобы  при попытке открыть несуществующую страницу - пользователю должен сразу отдаваться 404 код ответа (без переадресации), а также выводиться сообщение о том, что страница не найдена. Сейчас же происходит переадресация на страницу /page-not-found
Код отдается сразу, тут ничего делеать не нужно.
Перенаправление будет всегда, так вы хотите показать сообщение о том, что страница не найдена.
Без перенаправления выдаст стандарную страницу ошибки сервера.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
02 Июль 2022, 11:00:12
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 22109
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
удаляя 404.tpl в шаблоне 500 ошибка, где отключить это перенаправление, уже где только можно переискала
В контроллерах. Так для товаров в ProductController.php
if (!Validate::isLoadedObject($this->product)) {
            Tools::redirect('index.php?controller=404');
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
02 Июль 2022, 11:01:41
Ответ #10
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
т.е.  в других кмс без изменения ссылки сразу просто страница не найдена, а в престашоп только на свою страницу и по другому никак? мне нужно чтобы если я ввела /123 то по этой ссылке 404 и отдало, а не менялась ссылка на другую страницу
02 Июль 2022, 11:05:35
Ответ #11
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
вот такой код в контроллере

if (!Validate::isLoadedObject($this->product)) {
            header('HTTP/1.1 404 Not Found');
            header('Status: 404 Not Found');
            $this->errors[] = Tools::displayError('Product not found');
        } else {
            $this->canonicalRedirection();
            /*
             * If the product is associated to the shop
             * and is active or not active but preview mode (need token + file_exists)
             * allow showing the product
             * In all the others cases => 404 "Product is no longer available"
             */
            if (!$this->product->isAssociatedToShop() || !$this->product->active) {
                if (Tools::getValue('adtoken') == Tools::getAdminToken('AdminProducts'.(int)Tab::getIdFromClassName('AdminProducts').(int)Tools::getValue('id_employee')) && $this->product->isAssociatedToShop()) {
                    // If the product is not active, it's the admin preview mode
                    $this->context->smarty->assign('adminActionDisplay', true);
                } else {
                    $this->context->smarty->assign('adminActionDisplay', false);
                    if (!$this->product->id_product_redirected || $this->product->id_product_redirected == $this->product->id) {
                        $this->product->redirect_type = '404';
                    }
02 Июль 2022, 11:11:15
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 22109
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Во всех смс будет редирект на страницу 404. Так как все запросы на index.php потом редирект по запросу.
Если редирект отключить, то обработка ошибки будет на стороне сервера и выдаст стандарную страницу ошибки хостера.
Если хотите изменить это правило, создаете свою страницу и правило в htaccess для редиректа на свою страницу.
Но для чего? Для сайта лучше переход на страницу 404 с возможностью выбора новой страницы/товара/категории.

Без редиректа, так вы написали, будет отдан код 404 и дефолтная страница сервера об ошибке. Это будет минусом для сайта. Можете проверить в поисковиках.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
02 Июль 2022, 11:13:59
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 22109
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
вот такой код в контроллере
...
Это для админки, там менять ничего не нужно, так как админка должна быть закрыта от индексации и просмотра кем-то со стороны.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
02 Июль 2022, 11:16:35
Ответ #14
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
я работаю с другими кмс водпресс. опенкарт, осторе, джумла, и там если перейти на несуществующую ссылку то в строке ссылки такая ссылка и останется, но никакой изменения на /page-not-found не будет.  только в престашоп такое, и вопрос не в том лучше это или нет,  а можно ли это сделать или нет? и если можно то как