Новости Joomla

Загадочный параметр $live_site в configuration.php Joomla

Загадочный параметр $live_site в configuration.php Joomla

Давным-давно, когда Joomla ещё была маленькой, в неё внедрили параметр $live_site. В ней хранился домен текущего сайта на случай, если Joomla не могла его определить из-за неверной настройки сервера. Нужно это было для разных SEO-компонентов, для использования редиректов и т.д.

Со временем для работы собственно сайта этот параметр перестал быть нужным. Уже в начале 2010-х стали встречаться рекомендации оставлять этот параметр пустым, дабы оный не привёл к лишним проблемам и путанице. Тем более, в web-админке нет места, где его можно указать или посмотреть его значение. Только в configuration.php, а туда смотрят не часто.

Однако, параметр всё же остался в ядре Joomla. Зачем он нужен? А нужен он в 2-х случаях:

  • для работы класса Joomla\CMS\Uri\Uri, который часто используется в коде Joomla для работы методов
    Uri::root() и
    Uri::base(), а значит может влиять и на работу в том числе ajax-скриптов.
  • для работы Joomla в CLI - командной строке сервера. В случае если вы используете в вашем CLI-плагине методы опять-таки класса Uri, то CLI ничего не знает о текущем домене, так как запускается вне web-сервера.

Поэтому домен нужно указывать принудительно. Либо с помощью параметра командной строки

--live-site, например,
—live-site=https://site.ru/. Со слешем на конце, иначе в CLI адрес сайта станет
https://site.rujoomla.php.Либо в параметре
$live_site в файле configuration.php, так как
CliApplication берёт настройку оттуда, если параметр команды не указан или пуст.

⚠️ Иначе в качестве хоста и url класса Uri будет установлено https://joomla.invalid/set/by/console/application. В самом же коде команды получить параметр

$live_site можно из объекта приложения

<?php protected function doExecute(InputInterface $input, OutputInterface $output): int { //... $live_site = $this->getApplication()->get('live_site'); //... }

и исходя из этого строить дальнейшую логику.

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

studio204

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
1. Был старый сайт на 1.5, сделали новый на 2.5 На старом был раздел с несколькими сотнями статей, адреса имели вид site.ru/journal/article.html
У статей при миграции сохранились alias'ы, но поменялось название категории.

И вот вопрос: как на новом сайте устроить передресацию так, чтобы при запросе site.ru/journal/article.html выдавалось site.ru/blogs/article.html При этом названия статей могут быть любые - меняться должно только название категории.
Может в htaccess чего прописать? Но что именно? Или глядеть в сторону расширений вроде sh404, если они такое делать умеют?

2. На том же сайте часть адресов имела вид site.ru/article/6/35.html (к примеру). И вот пытаюсь поставить переадресацию на такой адрес, а она не работает. То есть при запросе такого адреса на новом сайте выдается статья с номером ID 35. Которая никакого отношения к этому адресу, естественно, не имеет. Более того, не ставлю никакой переадресации, просто набираю этот адрес - и вместо ожидаемой ошибки 404 получаю статью с ID 35.
Пошел на другой свой сайт и не глядя набрал адрес mysite.ru/article/3/5, который там заведомо не существует - и тоже не получил никакой ошибки, а открылась статья с ID 5  crazy!
Что бы это было и как с этим бороться?

*

gray

  • Захожу иногда
  • 58
  • 1 / 0
1. Установите компонент - нужно поэксперементировать и выбрать из этих. ReDJ вроде имеет такую возможность - подставлять урл по правилам.
2. Значит такой адрес есть на новом сайте. И как я понимаю, получается конфликт - старые адреса работают на новом сайте но выдают не тот результат. Это нужно смотреть - что поменялось на новом сайт и почему так вышло.
*

studio204

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
1. Установите компонент - нужно поэксперементировать и выбрать из этих. ReDJ вроде имеет такую возможность - подставлять урл по правилам.

Смотрел AceSEF и ReDJ - так и не понял, как там это совершить. У ReDJ вообще документация отсутствует на сайте разработчика.
Я, конечно, надеялся, что есть возможность прописать строчку в htaccess.

2. Значит такой адрес есть на новом сайте. И как я понимаю, получается конфликт - старые адреса работают на новом сайте но выдают не тот результат. Это нужно смотреть - что поменялось на новом сайт и почему так вышло.

Так вот нет, НЕТ таких адресов на новом сайте. Что и загадочно. Попробуйте на любом СВОЕМ джумловском сайте набрать адрес mysite.ru/article/3/5 (цифры могут быть любыми) - и ошибки 404 не будет, а откроется материал с ID, соответствующим последней цифре. Я пробовал на трех сайтах - везде так.
*

gray

  • Захожу иногда
  • 58
  • 1 / 0
Смотрел AceSEF и ReDJ - так и не понял, как там это совершить. У ReDJ вообще документация отсутствует на сайте разработчика.
Я, конечно, надеялся, что есть возможность прописать строчку в htaccess.

Так вот нет, НЕТ таких адресов на новом сайте. Что и загадочно. Попробуйте на любом СВОЕМ джумловском сайте набрать адрес mysite.ru/article/3/5 (цифры могут быть любыми) - и ошибки 404 не будет, а откроется материал с ID, соответствующим последней цифре. Я пробовал на трех сайтах - везде так.
1.
RewriteRule ^journal/(.*)   /blogs/$1   [L]
или
RewriteRule ^journal/(.*)   /blogs/$1   [R=301,L]
(этот вариант выдаст поисковикам 301 Moved Permanently что бы они со временем перестали выдавать старые страницы)

2. Это правильное поведение Joomla - /article/3/5 , где 3=ID категории, а 5=ID статьи.
*

studio204

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
1.
RewriteRule ^journal/(.*)   /blogs/$1   [L]
или
RewriteRule ^journal/(.*)   /blogs/$1   [R=301,L]
(этот вариант выдаст поисковикам 301 Moved Permanently что бы они со временем перестали выдавать старые страницы)

О, спасибо, буду пробовать

2. Это правильное поведение Joomla - /article/3/5 , где 3=ID категории, а 5=ID статьи.

Гм. Хоть плачь ((((
Это же РЕАЛЬНЫЕ адреса старого сайта. Вот именно со словом article и цифирями. То есть, если у человека сохранился в закладках такой адрес, то он по-любому будет попадать на совершенно другой материал, и переадресовать ничего не получится?...
*

gray

  • Захожу иногда
  • 58
  • 1 / 0
Гм. Хоть плачь ((((
Это же РЕАЛЬНЫЕ адреса старого сайта. Вот именно со словом article и цифирями. То есть, если у человека сохранился в закладках такой адрес, то он по-любому будет попадать на совершенно другой материал, и переадресовать ничего не получится?...
"И как я понимаю, получается конфликт - старые адреса работают на новом сайте, но выдают не тот результат."
При переносе на новый сайт вы поменяли ID категорий и, возможно ID статей.
Постарайтесь воспроизвести те же ID на новом сайте.
*

Atas

  • Захожу иногда
  • 56
  • 2 / 0
Штатной (из админки) джумловской переадресацией второй вопрос наверно можно же решить, нет?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать короткие ссылки Joomla 3.9?

Автор ezheck

Ответов: 12
Просмотров: 5286
Последний ответ 10.01.2020, 07:44:37
от arma
SEF со слэшем на конце или без или сделать суффикс?

Автор staticlight

Ответов: 17
Просмотров: 14732
Последний ответ 09.04.2018, 15:20:24
от stendapuss
Сайт выполнил переадресацию слишком много раз

Автор luchesa

Ответов: 12
Просмотров: 5017
Последний ответ 23.07.2017, 00:38:51
от FedorGodunov
как сделать редирект внешних ссылок?

Автор Mega4el

Ответов: 0
Просмотров: 1441
Последний ответ 24.11.2016, 01:51:17
от Mega4el
Как сделать дубль страницы?

Автор Филипп Сорокин

Ответов: 16
Просмотров: 1987
Последний ответ 20.11.2015, 03:00:45
от Филипп Сорокин