Форум русской поддержки Joomla!® CMS
11.12.2016, 04:21:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

страница 404

 (Прочитано 410 раз)
0 Пользователей и 1 Гость смотрят эту тему.
yury181
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 9


« : 03.05.2016, 02:08:20 »

Люди добрые, направьте в нужном направлении.
Как убрать редирект в all_ads на свою 404? joomprod давит на "sef404", но наверняка у многих, как и у меня нет и не было желания использовать лишний компонент...
Яндекс нервничает, что получает 200, ну и я с ним тоже)

Включен стандартный SEF с суффиксом.
Записан
SerGunSter
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 113


« Ответ #1 : 04.05.2016, 21: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 отладочный у меня Azn

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

Репутация: +1/-0
Offline Offline

Сообщений: 113


« Ответ #2 : 05.05.2016, 18:33:07 »

короче роутер я таки допилил так, что по любому отклонению выдает 404-ю. Но есть еще такая магия, как на авито например, если ссылку неправильно указываешь, а идшник объявления корректный, то ссылка сама редиректится на верную. Решение интересное, но как прилепить в адсманагер не знаю. Все же немного смущает, что смена заголовка считается другим объявлением и будет поисковикам отдавать 404, ну либо смена категорий.  Не знаю верно это или нет Azn  
« Последнее редактирование: 05.05.2016, 18:36:21 от SerGunSter » Записан
yury181
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 9


« Ответ #3 : 18.06.2016, 04: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, 04:21:50 от yury181 » Записан
yury181
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 9


« Ответ #4 : 18.06.2016, 04: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
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 113


« Ответ #5 : 31.07.2016, 10:53:55 »

ну я по итогу весь роутер перепилил и в общем то во всех случая неправильных отдаю 404 Azn
Записан
Иван
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #6 : 05.09.2016, 15:42:02 »

ну я по итогу весь роутер перепилил и в общем то во всех случая неправильных отдаю 404 Azn

Добрый день!
Спасибо за решение. Попробовал в  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
Спасибо!
с уважением
Записан
Иван
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #7 : 05.09.2016, 17: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, 17:27:20 от Иван » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet