Новости 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 Гость просматривают эту тему.
  • 16 Ответов
  • 3555 Просмотров
*

Apollon

  • Захожу иногда
  • 289
  • 1 / 0
В файл .htaccess внесено изменение по FAQ из темы редиректов

Код
#Редирект со слеша на без слеша в конце, т.е. с site.ru/article/ на site.ru/article
RewriteRule ^(.*)/$ /$1 [R=301,L]

После этого изменения, перестал пускать в админку по
/administrator
/administrator/
/administrator.html

Сбрасывает на /administrator.html и пишет ошибка

if (($this->error->getCode()) == '404') { header('Location: http://site.com/tags/stranica.html); exit; }

Как исправить?
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
*

Apollon

  • Захожу иногда
  • 289
  • 1 / 0
исключить папку administrator из правила

Не подскажешь как?
*

Apollon

  • Захожу иногда
  • 289
  • 1 / 0
Код
#Редирект со слеша на без слеша в конце, т.е. с site.ru/article/ на site.ru/article
RewriteCond %{REQUEST_URI} ^(.*)/(\d+)-([^/]+)$
RewriteRule ^ %1/%3 [L,QSA,R=301]

Прописал, но таже ошибка и не пускает.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Это к удалению ID из урл.
Код
RewriteCond %{REQUEST_URI} ^(.*)/(\d+)-([^/]+)$
RewriteRule ^ %1/%3 [L,QSA,R=301]
А вот для попробуй для этой темы
Код
#Редирект со слеша на без слеша в конце, т.е. с site.ru/article/ на site.ru/article
RewriteCond %{REQUEST_URI} !administrator [NC]
RewriteRule ^(.*)/$ /$1 [R=301,L]
*

Apollon

  • Захожу иногда
  • 289
  • 1 / 0
Это к удалению ID из урл.
Код
RewriteCond %{REQUEST_URI} ^(.*)/(\d+)-([^/]+)$
RewriteRule ^ %1/%3 [L,QSA,R=301]
А вот для попробуй для этой темы
Код
#Редирект со слеша на без слеша в конце, т.е. с site.ru/article/ на site.ru/article
RewriteCond %{REQUEST_URI} !administrator [NC]
RewriteRule ^(.*)/$ /$1 [R=301,L]

Мне там айдишку не нужно было удалять, а наоборот вернуть)). Но спасибо.

А вот тут, все равно не пускает, та же ошибка (с последним кодом).
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Еще вариант для тестирования
Код
RewriteCond %{REQUEST_URI} !^/administrator/
RewriteRule ^(.*)/$ /$1 [R=301,L]
Мне там айдишку не нужно было удалять, а наоборот вернуть
Неправильно возвращать, редирект 301 нужен.В будущем то ссылки будут без ID.
*

Apollon

  • Захожу иногда
  • 289
  • 1 / 0
Еще вариант для тестирования
Код

RewriteCond %{REQUEST_URI} !^/administrator/
RewriteRule ^(.*)/$ /$1 [R=301,L]

Нет, тоже не пускает, ошибка таже.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Решение - положить стандартный .htaccess -> /administrator
*

Apollon

  • Захожу иногда
  • 289
  • 1 / 0
А вот для попробуй для этой темы
Код

#Редирект со слеша на без слеша в конце, т.е. с site.ru/article/ на site.ru/article
RewriteCond %{REQUEST_URI} !administrator [NC]
RewriteRule ^(.*)/$ /$1 [R=301,L]
Решение - положить стандартный .htaccess -> /administrator

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

только /administrator/
на
/administrator
не перекидывает, но это особо не важно.
*

Apollon

  • Захожу иногда
  • 289
  • 1 / 0
Добавляю код
Код
# Редирект с без HTML на с
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]

Админка редиректит на /administrator.html и не пускает, с вышеуказанной ошибкой.

До внесения этого кода, по administrator.html также не пускал, c /administrator редиректил на /administrator/ и пускал.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Код
# Редирект с без HTML на с
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)RewriteCond %{REQUEST_URI} !administrator [NC]RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]
Это только у вас такая проблема,все молчат про админку.
*

Apollon

  • Захожу иногда
  • 289
  • 1 / 0
Код
# Редирект с без HTML на с
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)RewriteCond %{REQUEST_URI} !administrator [NC]RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]
Это только у вас такая проблема,все молчат про админку.


Возможно, но решать то ее надо, тем более неизвестно, использует ли кто-то эти редиректы.

Попробовал выше предложенный код

Сайт выдал

Код
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at webmaster@site.com to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.
Apache/2.4.10 (Unix) Server at newsvolga.com Port 80

Как на фронте, так и в админке.
*

Vasiliy111

  • Захожу иногда
  • 248
  • 5 / 0
Столкнулся с такой же проблемой. Прописал редирект "с без HTML на с" - не могу зайти в админку.

Перенаправляет на страницу ошибки и к URL administrator добавляется .html

Пробовал
Цитировать
# Редирект с без HTML на с
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteCond %{REQUEST_URI} !administrator [NC]
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]

И
Цитировать
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteCond %{REQUEST_URI} !^/administrator/
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]

Не помогает. Помогите решить проблему.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Прописал редирект "с без HTML на с" - не могу зайти в админку.
В Настройках ЧПУ включена опция добавления суфикса ?
*

Vasiliy111

  • Захожу иногда
  • 248
  • 5 / 0
Да эта функция включена!
*

Vasiliy111

  • Захожу иногда
  • 248
  • 5 / 0
Решил проблему так: в папку administrator положил файл .htaccess с одной строкой

RewriteEngine off
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться