Привет всем.Помогите верно настроить 404 ошибку.В таблице БД есть 30 товаров, для вывода отвечает файл view_cat.php?id=n Но если на адресном строку дать id=31,32...N выводит ошибку, что в таблице нет данных.Как настроить, чтобы в это время дал 404.html.Это проблема есть и тогда, когда удаляю одно из товаров. Я начинающий, код написала, но не работает..Хот скажите где ошибка.
if(isset($_GET['id']))
{
$id=$_GET['id'];
}
if(!isset($id))
{
$id=1;
}
if(!preg_match("|^[\d]+$|",$id)){
exit("<p>неверный формат запроса!Проверьте URL");
}
if($id>=1 && $id<=30){
header("HTTP/1.1 404 Not Found");
header("Location: /404.html");
} // не работает
$rezult11=mysql_query("SELECT * FROM data WHERE id='$id'",$db);
if(!$rezult11){
echo "запрос не выполнено";
exit();
}
if(mysql_num_rows($rezult11) > 0){
$myrow11=mysql_fetch_array($rezult11);
$new_view=$myrow11["view"]+1;
$update=mysql_query("UPDATE data SET view='$new_view' WHERE id='$id'",$db);
}
else{
echo "в таблице нет товари
}
?>
McLotos
13.07.2014 - 23:52
require '404.htm';?
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
13.07.2014 - 23:54
а вообще такое лучше делать в htaccess
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Цитата (SergeySA @ 13.07.2014 - 23:54) |
а вообще такое лучше делать в htaccess |
написала
ErrorDocumenrt 404
http://art-trotuar.ru/404.htmlРаботает хорошо, но не в этом случее.Нужно проверить переменный GET и тогда дать страницу 404.html
аааа кажется
if(mysql_num_rows($rezult11) > 0){
$myrow11=mysql_fetch_array($rezult11);
}
else{
echo "вот здесь нужно писать require '404.htm';? или что то вроде но ничего не работает
"
}
McLotos
14.07.2014 - 00:29
Я не совсем понимаю в чем связь между адресами и SQL-запросами?
Ну т.е. 404 нужно включать если пользователь попытался перейти на несуществующую страницу.
Для этого мы проверяем переданные GET параметры, и если в их ошибка тогда ругаемся 404
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
bestxp
14.07.2014 - 10:34
Как ты можешь сразу 2 статуса передать?
когда ты передаешь Location автоматически приписывается 301 заголовок, а ты первым отправил 404.
Тебе просто нужно не перенаправлять, а вывести содержимое 404.html
McLotos
14.07.2014 - 10:42
bestxp
ну так я это и предложил ещё в первом ответе, но по-моему ТС не понравилась эта идея =)
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Цитата (SergeySA @ 14.07.2014 - 10:42) |
bestxp ну так я это и предложил ещё в первом ответе, но по-моему ТС не понравилась эта идея =) |
Спасибо...Простите, меня понравилась идея, но вчера код не работал,а сегодня урааааа все ок... Вчера была усталим и допистила примитивная ошибка в коде
if(mysql_num_rows($rezult11) > 0){
$myrow11=mysql_fetch_array($rezult11);
}
else{
require '404.html';
}
sergeiss
14.07.2014 - 11:15
Позвольте уточню кое-что...
Если задача просто показать юзеру ошибку, то да, достаточно вывести страницу с ошибкой. Но если надо, чтобы именно статус ошибки был передан, то надо вот это возвращать
Цитата (Аня @ 13.07.2014 - 23:41) |
header("HTTP/1.1 404 Not Found"); exit(); |
и в htaccess правильно настроить
Цитата (Аня @ 14.07.2014 - 00:14) |
ErrorDocument 404 |
Те же самые поисковики, например, смотрят возвращаемый код. Поэтому для целей правильного СЕО простой вывод страницы недостаточен.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
McLotos
14.07.2014 - 11:25
Цитата (sergeiss @ 14.07.2014 - 11:15) |
Поэтому для целей правильного СЕО простой вывод страницы недостаточен. |
по-моему ТС ещё рановато об этом думать =)
Хотя да, как я обычно говорю. нужно сразу учиться правильно =)
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Цитата (sergeiss @ 14.07.2014 - 11:15) |
Позвольте уточню кое-что...
Если задача просто показать юзеру ошибку, то да, достаточно вывести страницу с ошибкой. Но если надо, чтобы именно статус ошибки был передан, то надо вот это возвращать
Цитата (Аня @ 13.07.2014 - 23:41) | header("HTTP/1.1 404 Not Found"); exit(); |
и в htaccess правильно настроить
Цитата (Аня @ 14.07.2014 - 00:14) | ErrorDocument 404 |
Те же самые поисковики, например, смотрят возвращаемый код. Поэтому для целей правильного СЕО простой вывод страницы недостаточен.
|
Да я Это и имела виду,потому что будут много дублей,потому что если в таблице нет товаров по данному id, то ПС будет индексировать одинаковый контент- учитывая часть контента, который повторяется всех страницах view_cat.php,я поменяю только цена и картинки -их значении вытаскиваю из БД,если нет такой товар возвращает голый контент
вот приме я удалила товар id=1 и id=3,которые уже в поиске но у них уже одинаковый голый контент- ВОТ ОТКУДА ВОЗНИК МОЙ ВОПРОС
Цитата (SergeySA @ 14.07.2014 - 11:25) |
Цитата (sergeiss @ 14.07.2014 - 11:15) | Поэтому для целей правильного СЕО простой вывод страницы недостаточен. |
по-моему ТС ещё рановато об этом думать =) Хотя да, как я обычно говорю. нужно сразу учиться правильно =)
|
Я Cео знаю лучше, чем php, Чтобы бороться дублями пришлось углублятся в коде и выяснить где ошибка.
sergeiss
14.07.2014 - 11:44
Тем более, если СЕО знаешь более-менее хорошо, то должна понимать, что простой вывод одинаковой страницы с указанием ошибки "не есть хорошо". С точки зрения поисковиков это будет в чистом виде дублирующийся контент. Ведь в случае простого подключения 404.html через require страница выдается с обычным кодом, а не с 404.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
да я Это понимаю.Ну вот код не хочет работать.Помогите где ошибка??
if(isset($_GET['id']))
{
$id=$_GET['id'];
}
if(!isset($id))
{
$id=4;
}
if(!preg_match("|^[\d]+$|",$id)){
exit("<p>неверный формат запроса!Проверьте URL");
}
$rezult11=mysql_query("SELECT * FROM data WHERE id='$id'",$db);
if(!$rezult11){
echo "oshibka ne vipolnilos zapros"
exit();
}
if(mysql_num_rows($rezult11) > 0){
$myrow11=mysql_fetch_array($rezult11);
$new_view=$myrow11["view"]+1;
$update=mysql_query("UPDATE data SET view='$new_view' WHERE id='$id'",$db);
}
else{
header("HTTP/1.1 404 Not Found");
exit();
}
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.