Перейти к содержанию
efremovxp

Неправильные относительные пути

Рекомендуемые сообщения

Здравствуйте.

Магазин работал пол года без проблем, но что то произошло за последние 1-2 недели.

В категориях второго уровня типа /категория/подкатегория и во всех товарах типа /категория/товар относительные пути к изображениям стилям и js. Всегда так было и во всех магазинах opencart так.

Но в один прекрасный день все ресурсы перестали загружаться. htaccess проверил, он стандартный.

Вручную переделал все пути к файлам. Было catalog/view/javascript/jquery/magnific/magnific-popup.css стало /catalog/view/javascript/jquery/magnific/magnific-popup.css

Но невозможно добавить товар в корзину и т.д., так как POST запросы отправляются по неправильному пути. Надо на index.php, а отправляется на категория/index.php

 

К примеру

Не работает https://открытки-ежика.рф/животные/dreamy-cat

Работает https://открытки-ежика.рф/dreamy-cat

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что за модули устанавливали ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, markimax сказал:

Что за модули устанавливали ?

За последние месяцы вообще никакие модули и файлы не трогались. Всё само работало и само перестало работать.

Если вы об этом, то нет. Его модулей нет.

На этой странице https://открытки-ежика.рф/животные/dreamy-cat путь к изображению не правильный, а тут https://открытки-ежика.рф/dreamy-cat правильный.

Но раньше работало ведь. И у всех на opencart такие пути к файлам не правильные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хостер сказал, что ничего не менялось в настройках.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть дело в этом?

<base href="">

 

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Strelez сказал:

Может быть дело в этом?


<base href="">

 

Именно там
Не правильный мета тег base

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, markimax сказал:

Именно там
Не правильный мета тег base

 

<base href="<?php echo $base; ?>" />

На что же его менять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 минут назад, efremovxp сказал:

<base href="<?php echo $base; ?>" />

На что же его менять?

Здесь ничего не надо менять. Идите в контроллер шапки и смотрите, почему у вас переменная $base передаётся в шаблон пустой.

  • +1 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, Dotrox сказал:

Здесь ничего не надо менять. Идите в контроллер шапки и смотрите, почему у вас переменная $base передаётся в шаблон пустой.

$data['base'] = $server;

Ничего связанного с $base там нет, проверил в чистом opencart контроллер шапки, там так же ничего связанного с $base. Откуда он берется и почему может быть пустым?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, efremovxp сказал:

$data['base'] = $server;

Это и есть $base.

Всё, что в контроллере в виде ключей массива $data - в шаблоне превращается в переменные. Смотрите дальше на $server.

И не забывайте про кеш модификаторов. В оригинальных файлах проблем может и не быть.

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, Dotrox сказал:

Это и есть $base.

Всё, что в контроллере в виде ключей массива $data - в шаблоне превращается в переменные. Смотрите дальше на $server.

И не забывайте про кеш модификаторов. В оригинальных файлах проблем может и не быть.

тут

/system/storage/modification/catalog/view/theme/welldone/template/common

и тут

/system/storage/modification/catalog/controller/common

нет файла header.tpl и header.php

Я в тупике

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Dotrox сказал:

Это и есть $base.

Всё, что в контроллере в виде ключей массива $data - в шаблоне превращается в переменные. Смотрите дальше на $server.

И не забывайте про кеш модификаторов. В оригинальных файлах проблем может и не быть.

Там по цепочке много чего может быть :)
К примеру config.php для https часто заполняют url без схемы не https://...  а тупо //...
Потом начинаются проблемы. (но может в данном случае быть и другая ошибка)
Уже не раз встречал "такое" с base после перехода на https у клиентов
По "цепочке" модулями где то меняется переменная конфига отвечающая за имя домена на https протоколе

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, markimax сказал:

Там по цепочке много чего может быть :)
К примеру config.php для https часто заполняют url без схемы не https://...  а тупо //...
Потом начинаются проблемы. (но может в данном случае быть и другая ошибка)
Уже не раз встречал "такое" с base после перехода на https у клиентов
По "цепочке" модулями где то меняется переменная конфига отвечающая за имя домена на https протоколе

// HTTP
define('HTTP_SERVER', 'https://xn----8sboehdjaf6axwc9j.xn--p1ai/');

// HTTPS
define('HTTPS_SERVER', 'https://xn----8sboehdjaf6axwc9j.xn--p1ai/');

Сайт с самого начала, еще пол года назад работал на https

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, Dotrox сказал:

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

:) Знаю как вы реагируете на это, но SEO HTTPS FIX PRO реально помогает и в этих случаях, это факт.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вспомнил, что единственное, что я делал, это проверял сайт по этой ссылке http://ocshop.info/testmyshop.html

Но проблем не было обнаружено. Возможно, после этой проверки что то случилось... Куда этот сайт стучится, что он проверяет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Только что, efremovxp сказал:

Куда этот сайт стучится, что он проверяет?

Куда б он не стучался, он вам файлы отредактировать не может, если там проблем не показало.

Кстати, а в админке у вас проблем с base нет.

 

Только что, markimax сказал:

:) Знаю как вы реагируете на это, но SEO HTTPS FIX PRO реально помогает и в этих случаях, это факт.

Я на это нормально реагирую, если не утверждать, что любые другие решения - костыли.

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там и другая проблема

В header заменены "стандартные" относительные пути на "/...

Т е здесь проблема "глобальная" а не только в base

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, Dotrox сказал:

Я на это нормально реагирую, если не утверждать, что любые другие решения - костыли.

Я привык называть вещи своими именами

Если это костыль - то костыль. И не надо на это обижаться

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
37 минут назад, markimax сказал:

В header заменены "стандартные" относительные пути на "/...

Т е здесь проблема "глобальная" а не только в base

А в админке все норм. Вспоминайте, что меняли.

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, markimax сказал:

Там и другая проблема

В header заменены "стандартные" относительные пути на "/...

Т е здесь проблема "глобальная" а не только в base

 

2 часа назад, Strelez сказал:

А в админке все норм. Вспоминайте, что меняли.

специально поменял на / чтобы хоть как то работало. А то вообще ни стилей ни js ни изображений не было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не понимаю, на какой магии это работало и почему перестало работать, ведь я ничего не трогал.

Решение оказалось таким:

заменить

$data['base'] = $server

на

if ($this->request->server['HTTPS']) {
    $data['base'] = HTTPS_SERVER;
} else {
    $data['base'] = HTTP_SERVER;
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, efremovxp сказал:

Не понимаю, на какой магии это работало и почему перестало работать, ведь я ничего не трогал.

Решение оказалось таким:

заменить


$data['base'] = $server

на


if ($this->request->server['HTTPS']) {
    $data['base'] = HTTPS_SERVER;
} else {
    $data['base'] = HTTP_SERVER;
}

 

Ну это костыль :)

Вы разберитесь почему $server из переменных конфига не получил правильное имя домена
Потому что рано или поздно все равно всплывет в другом месте похожий баг

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, markimax сказал:

Ну это костыль :)

Вы разберитесь почему $server из переменных конфига не получил правильное имя домена
Потому что рано или поздно все равно всплывет в другом месте похожий баг

Это я подсмотрел в /admin/controller/common/header.php

Не понятно, почему в админской и пользовательской части это сделано по разному.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть, у вас $this->config->get('config_ssl') пустой получается? Или у вас $server заполнялся не так, как здесь: https://github.com/opencart/opencart/blob/master/upload/catalog/controller/common/header.php

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.