https

’tag’

Решение проблем с NGINX, IP и HTTPS в Joomla 3.2.3

Апрель 5, 2014

Этот пост будет первым из серии "Танцы с бубном в Joomla". Почему так? Несмотря на все достоинства среды, возникают проблемы, которые приходится внедрять с помощью внедрения своего кода в начинку самой джумлы, что не есть хорошо, но все же. Собственно это и есть одна из причин поста - сохранить изменения. В коде помечаю такие места с помощью комментария "// cay127" и команда grep мне всегда поможет быстро найти все, что было изменено вручную.

И еще пару слов - да, где-то может плагин был бы лучшим решением, может где-то не докопал до истины, но просто экономил время. Плагин отмечу - не всегда применим и это скоро станет понятно.

После вступления

Проблема вот в чем - джумла строит ссылки следующим образом (автоматически):

$theURI = 'http' . $https . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

Но у меня переменная $_SERVER['HTTP_HOST'] содержит IP адрес, а не название домена вовсе. Т.о. быстрое решение стало следующим: правим файл:

libraries/joomla/uri/uri.php

точка опоры:

public static function getInstance($uri = 'SERVER')

Без лишних подробностей изменения (помним о комментарии):

public static function getInstance($uri = 'SERVER')
{
	if (empty(self::$instances[$uri]))
	{
		// Are we obtaining the URI from the server?
		if ($uri == 'SERVER')
		{
			// Determine if the request was over SSL (HTTPS).
			// cay127
			if (true OR sset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off'))
			{
				$https = 's://';
			}
			else
			{
				$https = '://';
			}

			/*
			 * Since we are assigning the URI from the server variables, we first need
			 * to determine if we are running on apache or IIS.  If PHP_SELF and REQUEST_URI
			 * are present, we will assume we are running on apache.
			 */

			if (!empty($_SERVER['PHP_SELF']) && !empty($_SERVER['REQUEST_URI']))
			{
				// To build the entire URI we need to prepend the protocol, and the http host
				// to the URI string.

				// cay127
				// $theURI = 'http' . $https . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
				// [HTTP_HOST] => 212.XX.XX.XX
				$theURI = 'http' . $https . 'www.site.ru' . $_SERVER['REQUEST_URI'];
			}

Реальный IP и домен скрыты, но суть ясна. Плюс прописал условие всегда использовать только HTTPS.

Tags: , , , , , ,
Записано в Joomla, Программирование    |    Постоянная ссылка

О несовместимости FaceBook кнопки Like и https

Октябрь 21, 2012

После многочисленных и многочасовых испытаниях так и не удалось динамически передавать картинку, заголовок и описание материала в FaceBook. Нет разницы, используется обычный синтаксис или Graph Tags, данные не передаются.

Однако, все правильно, FaceBook пытается считать необходимые данные с самого сайта, а сделать это не может, так как используется протокол https.

С другой стороны, считаю большой недоработкой, что не предусмотрена передача данных в GET запросе.

Отладчик FaceBook Debugger

Несмотря на то, что достигнуть желаемого результата не удалось, я нашел очень удобный сервис, который позволяет понять, какая ошибка допущена при установки кнопки FaceBook на сайт:

Самое интересное, что если в данный отладчик вставить https ссылку, то данные считываются. Далее при нажатии на кнопку Like на сайте, в FaceBook передаются верные значения title, description и image. Но именно для той, что была ранее протестирована в отладчике. При вставке следующей ссылки, данные по предыдущей вновь перестают работать.

Ссылка по теме

Tags: , ,
Записано в PHP    |    Постоянная ссылка