Не выдает пользователскую страницу 404 - страница не найдена

0 Пользователей и 1 Гость просматривают эту тему.
  • 30 Ответов
  • 27513 Просмотров
*

7daysfreelancer

  • Новичок
  • *
  • 4
  • -1
Добрый день всем, у меня одна очень странная проблема, возможно ее решение довольно простое, но пока найти его мне не удалось:

Дело у меня такое, есть сайт на Joomla 2.5.6 с привязкой VirtueMart 2.0.6. На главной странице сайта выводится главная страница VirtueMart без модулей VirtueMart, просто видны категории товаров, рекомендуемые товары, топ товары и новые товары, магазин расположен по другому адресу - http://mysite.ru/magazin. Все нормально работало пока дело не дошло до редиректов и htaccess и custom 404 error page. Дело в том, что когда набираешь несуществующий URL, вместо того, чтобы показать сделанную мною страницу 404, сайт показывает мне ссылку : http://mysite.ru/index.php?option=com_virtuemart, каждый раз, когда я набираю что-то левое, показывает мне главную страницу компонента, причем в странном виде.. Не так, что перенаправляется на главную страницу сайта, а только на главную страницу VirtueMart...


SEF включен,

Перенаправление URL включено,

404 страница была создана как в статье:http://docs.joomla.org/Creating_a_Custom_404_Error_Page

.htaccess такой вот...


Спойлер
[свернуть]


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

Единственное, что я заметил, что если набрать скажем http://mysite.ru/index.php?option=com_oijoijo выдается ошибка 404 Компонент не найден т.е. не моя 404 страница, а стандартная 404 страница отсутствия компонента, хотелось бы узнать, как в данном случаи также перенаправить пользователя на мою 404 страницу?


Зараннее, спасибо за помошь!
« Последнее редактирование: 11.03.2013, 02:53:38 от fsv »

*

z0dchij

  • Осваиваюсь на форуме
  • ***
  • 47
  • 9
Цитировать
404 страница была создана как в статье:http://docs.joomla.org/Creating_a_Custom_404_Error_Page
Там про .htaccess вроде бы ничего не сказано.
Цитировать
ErrorDocument 404 /index.php?option=com_content&view=article&id=6
Закомментируйте эту строчку и посмотрите что будет.

P.S. Может быть будет полезно. Я при создании кастомизированной страницы ошибки 404 пошел по той логике, что в 2.5 Joomla! для такого случая есть файл error.php из папки templates/system Поэтому просто изменил выдаваемое им по умолчанию на нужное мне. И все.
« Последнее редактирование: 08.07.2012, 19:09:20 от z0dchij »

*

7daysfreelancer

  • Новичок
  • *
  • 4
  • -1
Спасибо Вам за ответ, я так понял сразу в error.php в моем шаблоне прописать на HTML структуру самого документа 404, да?

*

z0dchij

  • Осваиваюсь на форуме
  • ***
  • 47
  • 9
У меня в папке с шаблоном нет такого файла. Стандартная джумловская страница ошибки выдавалась посредством файла error.php в /templates/system/ Все что я сделал это поменял само выдаваемое содержимое на нужное мне, то есть прописал свое содержимое в теге <body>:
Код
<body>
<!-- Моя страница ошибки 404 -->
</body>

Хотя в семантической корректности это способа я не уверен.
« Последнее редактирование: 08.07.2012, 19:41:33 от z0dchij »

*

7daysfreelancer

  • Новичок
  • *
  • 4
  • -1
Нет и данный способ не сработал, что-то очень странная ошибка, с Joomla я работаю давно уже, но такого у меня еще не было...

*

7daysfreelancer

  • Новичок
  • *
  • 4
  • -1
Даже ставлю редирект с http://mysite.ru/index.php?option=com_virtuemart на http://mysite.ru - redirekt tozhe na rabotaet...

*

Tuzemec

  • Давно я тут
  • ****
  • 224
  • 26
  • Ня!
Даже ставлю редирект с http://mysite.ru/index.php?option=com_virtuemart на http://mysite.ru - redirekt tozhe na rabotaet...
Та же проблема. Только версия VM 2.0.8c и Joomla 2.5.6
Есть панацея от такого бага?
« Последнее редактирование: 17.07.2012, 14:23:18 от Tuzemec »
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!

*

SAS1024

  • Новичок
  • *
  • 2
  • 0
Кто-нибудь решил данную проблему? Я тоже с таким столкнулся...

*

niggatub

  • Давно я тут
  • ****
  • 205
  • -1
архиважный сабж. Решение  никто не нашел?
Вобще решение я думаю поставить тот же sh404SEF, но уже все линки проиндексированы и тд и тп... и заново все перелопачивать на компоненте как то не торт. Без сторонних компонентов как то можно решить?

*

kiryann

  • Захожу иногда
  • **
  • 19
  • 3
Такая же проблема, пока решил назначив главной страницу материалов Joomla, так 404 работает нормально, но всё же хотелось бы вывести вирт на главную, да и с другими компонентами, которые используют свой router.php такая же проблема, как только назначаешь главной страницей перестаёт выдавать 404 ошибку, например с zoo такая лажа, проблема была в router.php, вроде решили уже. Вообщем скорей всего надо копать в router.php , как  пока не знаю, если кто победил отзовитесь.

*

Tuzemec

  • Давно я тут
  • ****
  • 224
  • 26
  • Ня!
Вообщем скорей всего надо копать в router.php
Роутер самой Joomla, я правильно понял?
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!

*

kiryann

  • Захожу иногда
  • **
  • 19
  • 3
router.php компонента

*

Tuzemec

  • Давно я тут
  • ****
  • 224
  • 26
  • Ня!
... когда набираешь несуществующий URL, вместо того, чтобы показать сделанную мною страницу 404, сайт показывает мне ссылку : http://mysite.ru/index.php?option=com_virtuemart, каждый раз, когда я набираю что-то левое, показывает мне главную страницу компонента, причем в странном виде.. Не так, что перенаправляется на главную страницу сайта, а только на главную страницу VirtueMart...
Единственное, что я заметил, что если набрать скажем http://mysite.ru/index.php?option=com_oijoijo выдается ошибка 404 Компонент не найден т.е. не моя 404 страница, а стандартная 404 страница отсутствия компонента, хотелось бы узнать, как в данном случаи также перенаправить пользователя на мою 404 страницу?
В общем есть мысля такая...
В файле /component/com_virtuemart/virtuemart.php нужно поправить строки следующего содержания:
Код
} else {
    vmDebug('VirtueMart controller not found: '. $_class);
    $mainframe = Jfactory::getApplication();
    $mainframe->redirect('index.php?option=com_virtuemart');
}
Они в самом конце файла находятся. Я заменил на вот это:
Код
} else {
    vmDebug('VirtueMart controller not found: '. $_class);
    $mainframe = Jfactory::getApplication();
    $mainframe->redirect(JRoute::_ ('index.php?option=com_virtuemart'));
}
Но, думаю можно и на страницу 404 направить при желании... мне вроде как помогло...
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!

*

Zander_Black

  • Осваиваюсь на форуме
  • ***
  • 25
  • 0
Дело не совсем в этом. Редирект редиректом, а дубли страниц всё равно создаются! Как этого избежать придумал кто?

*

indigo

  • Осваиваюсь на форуме
  • ***
  • 71
  • 1
таже проблема, решения не нашёл пока-что....

*

wedflower

  • Новичок
  • *
  • 5
  • 0
Tuzemec, спасибо! именно ваше решение мне сейчас помогло.

*

ANiMAL

  • Осваиваюсь на форуме
  • ***
  • 28
  • 1
Спасибо за подсказку Tuzemec!
Решил проблему так:
Код
else {
    vmDebug('VirtueMart controller not found: '. $_class);
    $mainframe = Jfactory::getApplication();
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
echo file_get_contents('http://site.com.ua/404');
exit;
}

Сделал материал для 404 странице, опубликовал его в скрытый материал с алиасом 404
И теперь ВМ отдает при несуществующей странице нужную мне страницу с заголовком 404.
Заменяйте
Код
http://site.com.ua/404
на путь к своему сайту

*

pberit

  • Захожу иногда
  • **
  • 17
  • 0
Спасибо вам Tuzemec и ANiMAL. Но у меня не все работает. Если ввожу после назвы домена буквы то после етих изменений открывается 404 страница которую создал я, а когда после названия домена ввести цифры то страница моего сайта но пустая. При этом на сайте множество дублей! Каждый товар проиндексировался во всех категориях. Изменения, которые вы посоветовали не уничтожили эти ссылки они и дальше открываются. Если убрать с главной домашнюю страницу ВМ то эти страницы перестают существовать и открывается стандартная страница 404. Помогите пожалуйста решить эту проблему с дублями! Готов даже заплатить.

*

pberit

  • Захожу иногда
  • **
  • 17
  • 0
Пришлось платить фрилансеру. Решил он данную проблему изменениями в файле framework.php. Работает вроде хорошо. Вибивает свою 404 страницу. Если кому будет надо обращайтесь, попробую и вам помочь.

*

jouser

  • Осваиваюсь на форуме
  • ***
  • 125
  • 9
Эта проблема точно возникает когда главной страницей стоит сам вирт, но как это побороть нигде ничего не написано(

*

Tuzemec

  • Давно я тут
  • ****
  • 224
  • 26
  • Ня!
Пришлось платить фрилансеру. Решил он данную проблему изменениями в файле framework.php. Работает вроде хорошо. Вибивает свою 404 страницу. Если кому будет надо обращайтесь, попробую и вам помочь.
Кому надо... очень надо! Всем практически. В особенности мне =)
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!

*

pberit

  • Захожу иногда
  • **
  • 17
  • 0
Кому надо... очень надо! Всем практически. В особенности мне =)
Ну так давайте вместе по експерементируем? Мне нужен доступ к вашему сайту по ftp, что я сайту сделаю? Я просто не уверен что смогу все из своего сайта перенести на другой, надо смотреть.

*

bubaduba

  • Осваиваюсь на форуме
  • ***
  • 40
  • 0
  • Делай добро, и отпускай его в море...
Проблема актуальна не только для сайтов с виртом, у  меня например перестал редирект работать тоже, буду благодарен за помощь.
Joomla 2.5.9 +sef404 3.7
« Последнее редактирование: 26.04.2013, 03:25:52 от bubaduba »

*

MakcOn

  • Захожу иногда
  • **
  • 12
  • -1
Спасибо ANIMAL :D только у тебя видимо  очепятка в коде.

у меня только так заработало

}else {
    vmDebug('VirtueMart controller not found: '. $_class);
    $mainframe = Jfactory::getApplication();
   header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
   echo file_get_contents('http//ваш сайт.сом/404');
   exit;
}

если домен Рф (как у меня crazy!) то после http я ставил адрес в пуникоде.

*

Uvic

  • Новичок
  • *
  • 4
  • 0
добрый день у меня в VirtueMart не переходит на 404 страницу.
сайт.домен/mobilnye-telefony/proizvoditeli-telefonov/134 выводит отображение сайт.домен/mobilnye-telefony/proizvoditeli-telefonov/
сайт.домен/mobilnye-telefony/proizvoditeli-telefonov134 выводит отображение сайта на уровень выше сайт.домен/mobilnye-telefony/
Аналогичная проблема с товаром - переходит на слеш выше.
сайт.домен/mobilnye-telefony123/proizvoditeli-telefonov134
в случае если на 1 уровень глубже чем сайт.домен нарпимер так выводит ошибку 404
Подскажите в чем может быть проблема?
 Joomla!, 2.5.7
 VirtueMart  2.0.14
.htaccess- не менял после установки Joomla (файл переименван в .htaccess и все)
Спойлер
[свернуть]
« Последнее редактирование: 21.07.2013, 21:44:14 от Uvic »

*

draff

  • Практически профи
  • *******
  • 2739
  • 169
  • step by step
У кого не работает редирект на 404, проверяем наличие пункта меню- Главная VirtueMart

*

stepan39

  • Давно я тут
  • ****
  • 248
  • 18

*

akunari

  • Осваиваюсь на форуме
  • ***
  • 34
  • 4
Спасибо, stepan39:D :D :D
Ваш метод помог)
на всякий случай скидываю нужный кусок сюда)

I have found a possible fix. In /components/com_virtuemart/virtuemart.php, line 111, i changed from:

Код
$mainframe->redirect(JRoute::_ ('index.php?option=com_virtuemart&view=virtuemart', FALSE));
   

to

Код
JError::raise(E_ERROR,'404','Not found');
    $mainframe->close();
   

This seems to do the trick.

*

fsv

  • Moderator
  • *****
  • 2506
  • 367
Заказать разработку:    расширения Joomla  |   интерфейсы на javascript(jQuery)  |  мобильные приложения

*

fenix-77

  • Новичок
  • *
  • 8
  • 0
Мне помог метод описанный здесьhttp://kitoraga.com/blog/stranicza-404-i-virtuemart-2.html
Правда слегка его переделал:
Код
} elseif (!$helper->use_id && ($helper->activeMenu->view == 'category' ) )  {
$product = $helper->getProductId($segments ,$helper->activeMenu->virtuemart_category_id);
$vars['virtuemart_product_id'] = $product['virtuemart_product_id'];
$vars['virtuemart_category_id'] = $product['virtuemart_category_id'];

//codepyro - removed suffix from router
//check if the last segment is a product.
//if so then load the product details page instead of category
if(isset($vars['virtuemart_product_id']))
{
   $vars['view'] = 'productdetails';
}
else
{
          JError::raiseError(404, JText::_("Page Not Found"));
}


} elseif (isset($segments[0]) && ctype_digit ($segments[0]) || $helper->activeMenu->virtuemart_category_id>0 ) {
$vars['virtuemart_category_id'] = $segments[0];
$vars['view'] = 'category';


} elseif ($helper->activeMenu->virtuemart_category_id >0 && $vars['view'] != 'productdetails') {
$vars['virtuemart_category_id'] = $helper->activeMenu->virtuemart_category_id ;
$vars['view'] = 'category';

} elseif ($id = $helper->getCategoryId (end($segments),$helper->activeMenu->virtuemart_category_id )) {

// find corresponding category . If not, segment 0 must be a view
$vars['virtuemart_category_id'] = $id;
$vars['view'] = 'category' ;
} else {
JError::raiseError(404, JText::_("Page Not Found"));
}
Но потом вылезла ошибка 404 при коментировании товара и редиректе.
Решил правкой components\com_virtuemart\controllers\productdetails.php
Код
$this->setRedirect (JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $virtuemart_product_id, FALSE), $msg);
Заменил на:
Код
$virtuemart_category_id = vRequest::getInt('virtuemart_category_id',0);
$this->setRedirect (JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id='.$virtuemart_product_id.'&virtuemart_category_id='.$virtuemart_category_id, FALSE), $msg);