Белый лист вместо 404. cURL + ssl?

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

master-smeta

  • Давно я тут
  • ****
  • 271
  • 9
Здравствуйте. Очередная проблема с кастомной страницей ошибки 404. Неправильная страница типа https://site.ru/errorurl.html выдает "белый лист" вместо страницы ошибки https://site.ru/404.html. При этом сама страница https://site.ru/404.html существует и работает нормально.
Страницу 404 делал стандартным методом:
1) добавил материал + пункт в меню
2) свой код в error.php:
Код
<?php
defined('_JEXEC') or die;

if($this->error->getCode()=='404'){
header("HTTP/1.0 404 Not Found");
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, JURI::base().'/404.html');
$data = curl_exec($ch);
curl_close($ch);
echo $data;
die();
}
?>
Этот код работал 100%. Предположительно перестал работать после перевода сайта на https. Дядя Яндекс Гуглович ничего дельного подсказать не смог, поиск по форуму тоже.
P.S. пробовал вардампить:
var_dump($ch); возвращает resource(257) of type (curl)
var_dump($data); возвращает bool(false)

Что делать, куда копать?

P.S.2 Joomla 3.6.5 PHP 7.0

*

robert

  • Профи
  • ********
  • 4006
  • 371
Re: Белый лист вместо 404. cURL + ssl?
« Ответ #1 : 21.02.2017, 13:42:13 »
Предположительно перестал работать после перевода сайта на https.
Видимо, так. Проверьте, что выдаст JUri::base().
Тем не менее, у меня к вам большой вопрос: зачем вы используете cURL для отображения внутренней страницы?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

master-smeta

  • Давно я тут
  • ****
  • 271
  • 9
Re: Белый лист вместо 404. cURL + ssl?
« Ответ #2 : 21.02.2017, 13:49:05 »
Видимо, так. Проверьте, что выдаст JUri::base().
Выдает строку с адресом. string(16) "https://site.ru/"
Тем не менее, у меня к вам большой вопрос: зачем вы используете cURL для отображения внутренней страницы?
Ну, типа сам не умею, пользуюсь чужими вариантами. Вариант с cURL'ом много где публикуют, в том числе и на этом форуме. Был еще вариант с file_get_content();
Есть еще какие-то варианты для создания собственной страницы 404?

*

robert

  • Профи
  • ********
  • 4006
  • 371
Re: Белый лист вместо 404. cURL + ssl?
« Ответ #3 : 21.02.2017, 13:58:49 »
Ну, дело может быть в самом сертификате. Можно еще поиграть с CURLOPT_SSLVERSION:
Добавьте эту строку и меняйте значение: 1, 2, 3...
Код: php-brief
curl_setopt($ch, CURLOPT_SSLVERSION , 3);
но говорят, что это небезопасно.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

master-smeta

  • Давно я тут
  • ****
  • 271
  • 9
Re: Белый лист вместо 404. cURL + ssl?
« Ответ #4 : 21.02.2017, 14:05:59 »
Попробовал. Если использовать $this->ch, то выдает Notice: Undefined property: JDocumentError::$ch и Warning: curl_setopt() expects parameter 1 to be resource, null given
Заменил $this->ch на $ch, попробовал 1...3... Без изменений. Белый лист.

*

Septdir

  • Практически профи
  • *******
  • 2160
  • 108
  • JoomlaZen
Re: Белый лист вместо 404. cURL + ssl?
« Ответ #5 : 21.02.2017, 14:54:29 »
У меня другой большой вопрос к чему вообще такие извращения. если нужен материал заместо ошибки, то можно сделать редирект, причем скажем для всех кроме ботов и админов. Если там модули нужны или текст другой, то это можно сделать прямо в eror.php. И да а что у вас происходит с другими ошибками, на сайте ведь не только 404.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen

*

master-smeta

  • Давно я тут
  • ****
  • 271
  • 9
Re: Белый лист вместо 404. cURL + ssl?
« Ответ #6 : 21.02.2017, 15:19:08 »
У меня другой большой вопрос к чему вообще такие извращения. если нужен материал заместо ошибки, то можно сделать редирект, причем скажем для всех кроме ботов и админов. Если там модули нужны или текст другой, то это можно сделать прямо в eror.php. И да а что у вас происходит с другими ошибками, на сайте ведь не только 404.
Изначально задача стояла следующая: сделать собственную страницу ошибки 404. Именно для этой ошибки, чтобы хоть как-то попытаться "конвертировать" пользователей пришедших по "битой" ссылке. После долгих поисков и перебора различных вариантов остановился на указанном в первом посте. Все работало нормально. Правильно это было, или нет, главное что скрипт работал и решал поставленную задачу. А теперь перестал...
Получил Ваше сообщение в личку. Ваш код работает, спасибо! Если не возражаете - поделюсь в этой теме вашей ссылкой на решение. А так вообще было бы хорошо добавить этот вариант в FAQ на этом форуме, т.к. вопросы о 404 возникают тут довольно часто

*

Septdir

  • Практически профи
  • *******
  • 2160
  • 108
  • JoomlaZen
Re: Белый лист вместо 404. cURL + ssl?
« Ответ #7 : 21.02.2017, 15:23:05 »
Да вариант то банальный и ничего нового в нем нет. Ну если хотите выложу ссылку. Хотя не большой любитель делиться в паблике
https://septdir.ru/blog/web/joomla-eror-page-with-visitor-redirect.html
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen

*

master-smeta

  • Давно я тут
  • ****
  • 271
  • 9
Re: Белый лист вместо 404. cURL + ssl?
« Ответ #8 : 21.02.2017, 15:30:06 »
Да вариант то банальный и ничего нового в нем нет. Ну если хотите выложу ссылку. Хотя не большой любитель делиться в паблике
https://septdir.ru/blog/web/joomla-eror-page-with-visitor-redirect.html
Банальный то он может и банальный, для знающих людей. А я вот к таким не отношусь, да и не только я. В любом случае - Ваш способ мне помог. Спасибо!