Перейти к содержимому


Страница 404


  • Вы не можете ответить в тему
Сообщений в теме: 22

#1 x777am77

    Пользователь

  • Download User
  • PipPip
  • 22 сообщений
Репутация: 0
Начинающий

Отправлено 18 August 2011 - 12:27 AM

Подскажите как "отредактировать" страницу 404 ?
Точнее сделать ее немного покрасивее ,а то она страшная ;)
  • 0

#2 vakkula

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 101 сообщений
Репутация: 6
Начинающий

Отправлено 18 August 2011 - 08:33 AM

а еще лучше что бы небыло ее, и переходило на главную страничку
  • 0

#3 Buivol

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений
Репутация: 0
Начинающий

Отправлено 30 August 2011 - 06:31 AM

а еще лучше что бы небыло ее, и переходило на главную страничку


это не всегда удобно, а вот управление из админки было бы кстати
  • 0

#4 invent

    Пользователь

  • Пользователи
  • PipPip
  • 26 сообщений
Репутация: 0
Начинающий

Отправлено 16 December 2011 - 04:24 PM

подниму вопрос, так как тоже интересует.
как сделать чтобы при 404 ошибке выводилась страница, которую я сделаю в менеджере страниц и обзову 404.html
на ней можо было бы разместить уже нормальное сообщение об ошибке.
  • 0

#5 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 16 December 2011 - 06:30 PM

как сделать чтобы при 404 ошибке выводилась страница, которую я сделаю в менеджере страниц и обзову 404.html
на ней можо было бы разместить уже нормальное сообщение об ошибке.

Вариант, если до (или вместо) апача стоит nginx:

error_page 404 /404.html;
location = /404.html
{root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html
{root /usr/share/nginx/html;
}

Более полно: http://wiki.nginx.or...dule#error_page

Хотя, вроде, у апача оно тоже где-то лежит в качестве вполне конкретного html-файлика. Редактируй как угодно.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#6 invent

    Пользователь

  • Пользователи
  • PipPip
  • 26 сообщений
Репутация: 0
Начинающий

Отправлено 16 December 2011 - 06:40 PM

в этом варианте я так понимаю нужно создать страницу 404.html и выложить её в корень ?
т.е. её нужно будет сверстать под сайт..
было бы идеально чтобы в менеджере страниц создать отдельную страничку, тогда она будет в дизайне сайта и все блоки будут, чтоб покупатель мог перейти к катологу например.
  • 0

#7 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 16 December 2011 - 07:18 PM

в этом варианте я так понимаю нужно создать страницу 404.html и выложить её в корень ?

Нет. Если "в этом" это в описанном мной варианте, то не в корень сайта, а туда, куда указывает root в location. Если 404.html класть прямо в корень сайта, то location вообще не нужен. Он именно для того, чтобы 404.html можно было положить отдельно. В некоторых репозиториях с nginx этот набор директив в конфиге (и файлов в каталоге) идет уже в дефолтовой установке.

т.е. её нужно будет сверстать под сайт..

Не обязательно. Можно как у Яндекса. Или еще у кого. Сейчас вообще модно стало 404-ю ошибку чуть ли не круче сайта делать :).

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

Что такое "менеджер страниц"?
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#8 invent

    Пользователь

  • Пользователи
  • PipPip
  • 26 сообщений
Репутация: 0
Начинающий

Отправлено 16 December 2011 - 08:39 PM

"менеджер" который в админке для создания страниц.
если я спомощью него создам страницу, я ведь к ней путь не смогу прописать, её ведь нет в отдельном файле.
  • 0

#9 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 16 December 2011 - 11:45 PM

Сможете. Как оказалось. Создал новую страничку с именем "Ошибка 404", написал туда некий текст. Сохранилось с заголовком-ссылкой "href="page_2.html">Ошибка 404". Заменил в конфиге nginx ссылку 404.html ссылкой page_2.html, location убрал за ненадобностью, т.к. root совпадает с дефолтовым root сайта. Алилуйя! При обращении к любой несуществующей странице вываливается эта созданная в менеджере страничка. Спасибо за идею! Я про менеджер страниц и не знал. Вот они, проблемы самоучки в отличие от системно обученного человека :(.

Т.е. теперь у меня обработка ошибки 404 в файлике имя_сервера.conf выглядит как
error_page 404 /page_2.html;

PS. Кстати, отвечая на более ранний вопрос. Для перехода по ошибке на стартовую страницу, очевидно, надо вписать index.php, но мне тоже не нравится эта идея.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#10 Dbus

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 1116 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 16 December 2011 - 11:57 PM

/core/languages/russian.php
define('ERROR_404_HTML', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><HTML><HEAD><TITLE>404 Not Found</TITLE></HEAD><BODY><H1>404 Not Found</H1>The requested URL was not found on this server.<HR><I>Generated by ShopCMS</I></BODY></HTML>');

этот кусок и отвечает за 404, правьте как хотите...
  • 0
502 Bad Gateway

#11 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 17 December 2011 - 12:08 AM

этот кусок и отвечает за 404, правьте как хотите...

Странно. У меня на несуществующую страницу, если ситуация не описана в конфиге nginx ругается "404 not found|nginx", а не текстом из russian.php. Т.е. nginx как-то просекает, что нет такой запрошенной странички. А ведь судя по процитированному Вами она есть, но в виде сообщения об ошибке. Той же.

PS. Полистал тексты на предмет ERROR_404_HTML. Впечатление, что die с этим текстом выдается отнюдь не везде и не всегда, а только в конкретных случаях.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#12 Dbus

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 1116 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 17 December 2011 - 12:18 AM

Если страница попадает под правила, т.е. product_167467.html несуществующий или category, должно отдавать 404 из языкового файла. Если вообще левый путь, то да, генерит сам апач или nginx, если я правильно понимаю.
  • 0
502 Bad Gateway

#13 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 17 December 2011 - 12:33 AM

Фигня тут у меня какая-то...
http://shop.renacomp...oduct_1553.html - нормальная ссылка.
http://shop.renacomp...ct_1553ххх.html - нормальная переадресация на error 404, т.е. на http://shop.renacomp.ru/page_2.html
http://shop.renacomp...uct_155311.html - "HTTP 404 - не найдено - Windows Internet Explorer".
http://shop.renacomp...duct_155311.htm - нормальная переадресация на error 404, т.е. на http://shop.renacomp.ru/page_2.html
Похоже, что-то в штатных реврайтах nginx (из дефолтового .htaccess) недодумано. буду разбираться.

Но ShopCMS-ное сообщение об ERROR_404 так и не смог получить, как ни старался :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#14 invent

    Пользователь

  • Пользователи
  • PipPip
  • 26 сообщений
Репутация: 0
Начинающий

Отправлено 17 December 2011 - 08:43 AM

тоже создал такую страницу в .htaccess прописал ErrorDocument 404 /page_6.html
потом если в каталоге создать товар ( например http://site.ru/product_682.html),
получилось следующее:

http://site.ru/product_682.html - нормальная ссылка на товар
http://site.ru/product_682.htm - выдаёт страницу которуя я создал

http://site.ru/product_6821111.html - выдаёт стандартный текст shopcms 404 Not Found

далее если товар удаляем получается:

http://site.ru/product_682.html - выдаёт стандартный текст shopcms 404 Not Found
http://site.ru/product_6821111.html - выдаёт стандартный текст shopcms 404 Not Found

http://site.ru/product_682.htm - выдаёт страницу которуя я создал
http://site.ru/fhfghfgh - тоже выдаёт страницу которуя я создал

где что поправить чтобы выдавал всегда мою страницу?
  • 0

#15 jikonast

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 63 сообщений
Репутация: 0
Начинающий
  • ГородМинск

Отправлено 29 August 2012 - 04:01 PM

Сможете. Как оказалось. Создал новую страничку с именем "Ошибка 404", написал туда некий текст. Сохранилось с заголовком-ссылкой "href="page_2.html">Ошибка 404".

до этого момента все понятно!

Заменил в конфиге nginx ссылку 404.html ссылкой page_2.html, location убрал за ненадобностью, т.к. root совпадает с дефолтовым root сайта.

После этой фразы появляется вопрос! где находится конфиг? где произвели замену ?
Дополните сообщение.
Зарание спасибо!
  • 0

#16 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 29 August 2012 - 04:27 PM

После этой фразы появляется вопрос! где находится конфиг? где произвели замену ? Дополните сообщение.

Дополняю: Вы не сможете изменить конфиг Nginx на хостинге, где стоит Apache :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#17 jikonast

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 63 сообщений
Репутация: 0
Начинающий
  • ГородМинск

Отправлено 29 August 2012 - 04:55 PM

После этой фразы появляется вопрос! где находится конфиг? где произвели замену ? Дополните сообщение.

Дополняю: Вы не сможете изменить конфиг Nginx на хостинге, где стоит Apache :).

А если стаит Apache, как правильно настроить еще не известно! )
остается только одно решение, переписать /core/languages/russian.php и вставить очень красивую страничку с припиской "просим вернуться на главную страницу"
  • 1

#18 gsm-group

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 101 сообщений
Репутация: 6
Начинающий

Отправлено 29 August 2012 - 05:17 PM

Ошибка 404 обрабатывается на уровне движка. Можете не пытаться что-то получить. Править надо index.php и еще что-то(не помню). Либо файл russian.php ( меньше гемороя ).
  • 0

#19 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 29 August 2012 - 06:21 PM

А если стаит Apache, как правильно настроить еще не известно!

1. Почему же? У апача точно так же, как и у nginx в основном конфиге (httpd.conf) задается html-шаблон (файл), который выдается при error-404, т.е. при обращении к несуществующей ссылке. Эту общую для всех настройку можно перекрыть локальной настройкой. У nginx - в конфигурации для конкретного сайта, у апача - в конфигурациях виртуальных хостов (если они есть, а у хостера они всегда есть), что в свою очередь можно перекрыть в .htaccess (если это не запрещено). Про апач на все сто не уверен, плохо его знаю и почти не использую.

2. надо понимать, что для ShopCMS "несуществующие страницы" есть двух типов - "совсем неверная ссылка", для которой нет ни прямого содержимого, ни реврайта в htaccess и неверная, но попадающая под реврайт-правила в htaccess ссылка (например, когда мы удалили товар, а ссылки на него в поисковиках остались). В первом случае код 404 и шаблон (если он есть) будет определяться именно web-сервером (апачем, нгинксом - не важно). Во втором - shopCMS-ом. Т.е. для первого случая путь к шаблону "страница не существует" надо задавать в .htaccess (конфиги виртуальных хостов и, тем более, httpd.conf клиентам хостера врядли доступны), а для второго вполне можно в russian.php или еще какими-либо способами, использующими возможности ShopCMS.

3. Какие красивые шаблоны не делай, а IE все равно при статусе 404 показывает СВОЮ локальную страничку. Можно не выдавать статус 404, но этого делать не стоит, т.к. по крайней мере гугль периодически (и довольно часто) проверяет индексируемые сайты на этот предмет, т.е. генерит рандомайзную страничку типа yousite.ru/345345%^6534.html и пытается по ней зайти. Если в ответ получит не 404 (ошибка), а 200 (все пучком), то врядли это кончится чем-то хорошим для индексации сайта :).

4. (вдогонку) В принципе, как и писал автор предыдущего сообщения, можно написать .htaccess так, чтобы ЛЮБАЯ ссылка, не попавшая под ПРЕДЫДУЩИЕ реврайт-правила тоже реврайтилась во что-нибудь. Например, в index.php/?nourl=yes, но удобнее в какой-нибудь отдельный php-файл. Логично было бы в error-404.php :). Ну а дальше все стандарно. В php пиши все, что хочешь и приделывай шаблон (TPL.HTML) какой хочешь.

PS. (for all) не стоит думать, что я такой добрый и строчу тут простыни из альтруизма. Все люди разные. Мне куда проще самому понять предмет пытаясь объяснить решение кому-то другому. В процессе ответа оно четко раскладывается в собственной голове по полочкам. Так что правильный вопрос, на мой взгляд, тоже заслуживает плюса :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#20 vito78

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений
Репутация: 0
Начинающий

Отправлено 27 September 2013 - 05:55 PM

Как сделать одну страницу 404 для всех случаев "страница не найдена"


admin.php
core/includes/category.php
core/includes/category_search_result.php
core/includes/news.php
core/includes/order_history.php
core/includes/product_detailed.php
core/includes/product_discussion.php
core/includes/show_aux_page.php
index.php

В этих файлах найти:

die(ERROR_404_HTML);


и заменить на:

// redirect to 404 page and exit
die(header("Location: " . CONF_FULL_SHOP_URL . "404.html"));

Само собой у Вас должен быть файл 404.html в корне сайта.

В принципе, можно каждому случаю "не найдено" приписать отдельную страницу 404. Seoшникам должно понравиться.

Сообщение отредактировал vito78: 27 September 2013 - 05:58 PM

  • 0