страница 404

  • 8 Ответов
  • 852 Просмотров

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

*

yury181

  • Новичок
  • *
  • 9
  • 0
страница 404
« : 03.05.2016, 03:08:20 »
Люди добрые, направьте в нужном направлении.
Как убрать редирект в all_ads на свою 404? joomprod давит на "sef404", но наверняка у многих, как и у меня нет и не было желания использовать лишний компонент...
Яндекс нервничает, что получает 200, ну и я с ним тоже)

Включен стандартный SEF с суффиксом.

*

SerGunSter

  • Осваиваюсь на форуме
  • ***
  • 113
  • 1
Re: страница 404
« Ответ #1 : 04.05.2016, 22:28:18 »
Люди добрые, направьте в нужном направлении.
Как убрать редирект в all_ads на свою 404? joomprod давит на "sef404", но наверняка у многих, как и у меня нет и не было желания использовать лишний компонент...
Яндекс нервничает, что получает 200, ну и я с ним тоже)

Включен стандартный SEF с суффиксом.


я вот экспериментирую с этой темой тоже.
чтобы убрать редирект надо во вьюхе details во view.html.php вместо
Код
$app->redirect( TRoute::_('index.php?option=com_adsmanager&view=list&catid='.$catid));
вставить что то вроде
Код
header($_SERVER['SERVER_PROTOCOL']." 404 Not Found");  
   echo file_get_contents(JURI::root().'index.php?option=com_content&view=article&id=6');
exit();

у меня просто 404-я страница как материал сделана. Предварительно 404-ю ошибку шлем, а не просто редиректим.  

далее, сейчас дошел до роутера и в файле /components/com_adsmanager/router.php

сделал вот чего:

вместо

Код
else
{
if ($nbsegments == 2)
{
$catid = explode( ':', $segments[0] );
   $vars['catid'] = (int) $catid[0];
   $id = explode( ':', $segments[1] );
   $vars['id'] = (int) $id[0];
   $vars["view"] = "details";
}


сделал вот такое

Код
if ($nbsegments == 2)
{

$catid = explode( ':', $segments[0] );
   $vars['catid'] = (int) $catid[0];
   $id = explode( ':', $segments[1],2 );

if ($id[1]==getAdsmanagerRouteContent((int)$id[0]))
{
print_r('ok');

}
else {
header($_SERVER['SERVER_PROTOCOL']." 404 Not Found");  
echo file_get_contents(JURI::root().'index.php?option=com_content&view=article&id=6');
exit();

}

   $vars['id'] = (int) $id[0];
   $vars["view"] = "details";

}

print_r отладочный у меня :)

смысл в том, что смотрим чего там нам передали, считываем идшник, по идшнику определяем какая часть ссылки из заголовка обьявления должна получиться и если то что считали в ссылке и то что должно быть не равно друг другу, то идем на 404-ю с отдачей кода ошибки. Ну а если в ссылке кривой идшник, то на 404-ю уйдем из вьюхи details.
Визуально вроде как не дает теперь рисовать что попало в ссылке после идшника. буду еще тестить :) также если обьяве поменяли headtext, то по сути роутер генерит ему новую ссылку и при такой реализации по старой ссылке объявление уже не найти, что, наверное коряво так как идшник не изменился. Не знаю пока, но для поисковика это другое уже объявление, ведь заголовок поменялся и ссылка по сути :)
 
« Последнее редактирование: 04.05.2016, 22:32:31 от SerGunSter »

*

SerGunSter

  • Осваиваюсь на форуме
  • ***
  • 113
  • 1
Re: страница 404
« Ответ #2 : 05.05.2016, 19:33:07 »
короче роутер я таки допилил так, что по любому отклонению выдает 404-ю. Но есть еще такая магия, как на авито например, если ссылку неправильно указываешь, а идшник объявления корректный, то ссылка сама редиректится на верную. Решение интересное, но как прилепить в адсманагер не знаю. Все же немного смущает, что смена заголовка считается другим объявлением и будет поисковикам отдавать 404, ну либо смена категорий.  Не знаю верно это или нет :)  
« Последнее редактирование: 05.05.2016, 19:36:21 от SerGunSter »

*

yury181

  • Новичок
  • *
  • 9
  • 0
Re: страница 404
« Ответ #3 : 18.06.2016, 05:13:53 »
SerGunSter, спасибо за указание верного направления на роутер! *DRINK*

У меня тоже все вышло - теперь, если есть ошибка в букве/цифре в каталогах или карточке товара то Яндекс получает свой любимый 404.
Кстати во view.html.php если использовать file_get_contents, то ответ 404 сервер не дает, кажется был 302.
А вот роутер, то что доктор прописал. Заодно и допилил роутер в com_content для материалов.

Теперь ищу, чтобы при отсутствии суффикса, тоже отдавал 404, как-то в Joomla с 404 прям беда(...

При использовании материала, на странице 404 выкидывает пользователя или же пользователь не может войти - скорее всего это особенность этой страницы в Joomla, т.к. в родной Joomla 404, мы не видим что происходит с пользователем.

PS кто будет допиливать для каталогов
Код
$catid[1]==getAdsmanagerRouteCategory((int)$catid[0])

 

« Последнее редактирование: 18.06.2016, 05:21:50 от yury181 »

*

yury181

  • Новичок
  • *
  • 9
  • 0
Re: страница 404
« Ответ #4 : 18.06.2016, 05:17:05 »
SerGunSter, спасибо за указание верного направления на роутер! *DRINK*

У меня тоже все вышло - теперь, если есть ошибка в букве/цифре в каталогах или карточке товара то Яндекс получает свой любимый 404.
Кстати во view.html.php если использовать file_get_contents, то ответ 404 сервер не дает, кажется был 302.
А вот роутер, то что доктор прописал. Заодно и допилил роутер в com_content для материалов.

Теперь ищу, чтобы при отсутствии суффикса, тоже отдавал 404, как-то в Joomla с 404 прям беда(...

При использовании материала, на странице 404 выкидывает пользователя или же пользователь не может войти - скорее всего это особенность этой страницы в Joomla, т.к. в родной Joomla 404, мы не видим что происходит с пользователем.

PS кто будет допиливать для каталогов
Код
$catid[1]==getAdsmanagerRouteCategory((int)$catid[0])

 



*

SerGunSter

  • Осваиваюсь на форуме
  • ***
  • 113
  • 1
Re: страница 404
« Ответ #5 : 31.07.2016, 11:53:55 »
ну я по итогу весь роутер перепилил и в общем то во всех случая неправильных отдаю 404 :)

*

Иван

  • Осваиваюсь на форуме
  • ***
  • 51
  • 0
Re: страница 404
« Ответ #6 : 05.09.2016, 16:42:02 »
ну я по итогу весь роутер перепилил и в общем то во всех случая неправильных отдаю 404 :)

Добрый день!
Спасибо за решение. Попробовал в  com_adsmanager_3.1.6 - работает только для карточки самого объявления.Вероятно я внес правки не для всех файлов.
 Для категории все по прежнему - любые варианты категории - нет редиректа. также любые варианты в секции категории обявления - нет 404
Например
site.ru/adsmanager/9-kategoria1/2-obyavlenie1BLA-BLA.html - 404 все работает правильно
site.ru/adsmanager/9-kategoria1BLA-BLA/2-obyavlenie1.html - 200 все неправильно
site.ru/adsmanager/9-kategoria1BLA-BLA.html - 200 все неправильно

Я так понял вы показали решения только для обявления. Если можно напишите более подробно в каких вайлах еще внести изменения и какой код для того, что бы работало и в категориях тоже.
У меня com_adsmanager_3.1.6
Спасибо!
с уважением

*

Иван

  • Осваиваюсь на форуме
  • ***
  • 51
  • 0
Re: страница 404
« Ответ #7 : 05.09.2016, 18:20:36 »
Вот попробовал вариант решения от SerGunSter.
Он у меня заработал только для ссылки обявления

Попробовал - Дописал еще условие для алиаса секции категории $catid[1]==getAdsmanagerRouteCategory((int)$catid[0]) - отдается 404 если в секции категории неправильные символы.
Теперь
site.ru/adsmanager/9-kategoria1BLA-BLA/2-obyavlenie1.html - 404 все правильно

Посмотрите пожалуйста  кто может - вероятно там условия  можно написать красивее. Кроме этого такое решение работает только для ссылки объявления. Для страници категорий, не работает - не знаю где искать файл и куда вносить условия для проверки.
Ребята у кого получилось помогите пожалуйста, посмотрите. Давайте Напишем окончательное полное решение 404 для компонента и закроем вопрос !
Код
if ($id[1]==getAdsmanagerRouteContent((int)$id[0])) 
{

}
else {
header($_SERVER['SERVER_PROTOCOL']." 404 Not Found");  
echo file_get_contents(JURI::root().'404.shtml');
exit();

}
if ($catid[1]==getAdsmanagerRouteCategory((int)$catid[0]))
{
}
else {
header($_SERVER['SERVER_PROTOCOL']." 404 Not Found");  
echo file_get_contents(JURI::root().'404.shtml');
exit();

}
« Последнее редактирование: 05.09.2016, 18:27:20 от Иван »

*

vanya_pushkin64

  • Захожу иногда
  • **
  • 14
  • 0
Re: страница 404
« Ответ #8 : 30.03.2017, 20:52:13 »
ну что кто-будь нашел способ для категорий?