страница 404

Автор bulo4ka, 24 июня 2022, 16:41:07

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

bulo4ka

Добрый день, как сделать , чтобы  при попытке открыть несуществующую страницу - пользователю должен сразу отдаваться 404 код ответа (без переадресации), а также выводиться сообщение о том, что страница не найдена. Сейчас же происходит переадресация на страницу /page-not-found

kvestin80

В файле htaccess закоментируйте или удалите правило
#ErrorDocument 404 /index.php?controller=404

bulo4ka

сделала, очистила кеш, все равно перенаправляет

Adik


bulo4ka

Хостинг Украина

Adik

Свой сервер или шаринг? Кеш сервера нужно сбросить, перегзапустить сервер после измений.

bulo4ka

удаляя 404.tpl в шаблоне 500 ошибка, где отключить это перенаправление, уже где только можно переискала

bulo4ka

шаринг все кеши очищаю постоянно, все оптимизации отключены на хостинге

PrestaMan

Цитата: bulo4ka от 24 июня 2022, 16:41:07
Добрый день, как сделать , чтобы  при попытке открыть несуществующую страницу - пользователю должен сразу отдаваться 404 код ответа (без переадресации), а также выводиться сообщение о том, что страница не найдена. Сейчас же происходит переадресация на страницу /page-not-found
Код отдается сразу, тут ничего делеать не нужно.
Перенаправление будет всегда, так вы хотите показать сообщение о том, что страница не найдена.
Без перенаправления выдаст стандарную страницу ошибки сервера.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

PrestaMan

Цитата: bulo4ka от 02 июля 2022, 10:55:52
удаляя 404.tpl в шаблоне 500 ошибка, где отключить это перенаправление, уже где только можно переискала
В контроллерах. Так для товаров в ProductController.php
if (!Validate::isLoadedObject($this->product)) {
            Tools::redirect('index.php?controller=404');
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

bulo4ka

т.е.  в других кмс без изменения ссылки сразу просто страница не найдена, а в престашоп только на свою страницу и по другому никак? мне нужно чтобы если я ввела /123 то по этой ссылке 404 и отдало, а не менялась ссылка на другую страницу

bulo4ka

вот такой код в контроллере

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';
                    }

PrestaMan

Во всех смс будет редирект на страницу 404. Так как все запросы на index.php потом редирект по запросу.
Если редирект отключить, то обработка ошибки будет на стороне сервера и выдаст стандарную страницу ошибки хостера.
Если хотите изменить это правило, создаете свою страницу и правило в htaccess для редиректа на свою страницу.
Но для чего? Для сайта лучше переход на страницу 404 с возможностью выбора новой страницы/товара/категории.

Без редиректа, так вы написали, будет отдан код 404 и дефолтная страница сервера об ошибке. Это будет минусом для сайта. Можете проверить в поисковиках.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

PrestaMan

Цитата: bulo4ka от 02 июля 2022, 11:05:35
вот такой код в контроллере
...
Это для админки, там менять ничего не нужно, так как админка должна быть закрыта от индексации и просмотра кем-то со стороны.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

bulo4ka

я работаю с другими кмс водпресс. опенкарт, осторе, джумла, и там если перейти на несуществующую ссылку то в строке ссылки такая ссылка и останется, но никакой изменения на /page-not-found не будет.  только в престашоп такое, и вопрос не в том лучше это или нет,  а можно ли это сделать или нет? и если можно то как