zyto Опубликовано: июля 2, 2018 Жалоба Поделиться Опубликовано: июля 2, 2018 Помогите решить проблему. Попробовал на Opencart.CMS и PRO версий 2.1.0.2.1 и 2.1.0.2.2 - не могу заставить работать в подкаталоге. Что делаю: 1. устанавливаю чистый Opencart.pro в какую-нибудь папку на локальном вэб-сервере, в моём случае это mh4.loc К папке привязан одноимённый локальный домен. Полный путь к каталогам сайта выглядит так: C:\apache\mh4.loc\www\ 2. Установка проходит нормально, проверяю что работает и админка и фронт. 3. Создаю подкаталог shop, переношу в него все файлы сайта 4. в файле config.php добавляю /shop/ везде где нужно, в итоге файл выглядит так: Скрытый текст <?php // HTTP define('HTTP_SERVER', 'http://mh4.loc/shop/'); // HTTPS define('HTTPS_SERVER', 'http://mh4.loc/shop/'); // DIR define('DIR_APPLICATION', 'C:/apache/mh4.loc/www/shop/catalog/'); define('DIR_SYSTEM', 'C:/apache/mh4.loc/www/shop/system/'); define('DIR_LANGUAGE', 'C:/apache/mh4.loc/www/shop/catalog/language/'); define('DIR_TEMPLATE', 'C:/apache/mh4.loc/www/shop/catalog/view/theme/'); define('DIR_CONFIG', 'C:/apache/mh4.loc/www/shop/system/config/'); define('DIR_IMAGE', 'C:/apache/mh4.loc/www/shop/image/'); define('DIR_CACHE', 'C:/apache/mh4.loc/www/shop/system/storage/cache/'); define('DIR_DOWNLOAD', 'C:/apache/mh4.loc/www/shop/system/storage/download/'); define('DIR_LOGS', 'C:/apache/mh4.loc/www/shop/system/storage/logs/'); define('DIR_MODIFICATION', 'C:/apache/mh4.loc/www/shop/system/storage/modification/'); define('DIR_UPLOAD', 'C:/apache/mh4.loc/www/shop/system/storage/upload/'); 5. Меняю файл admin/config.php, в итоге файл выглядит так: Скрытый текст <?php // HTTP define('HTTP_SERVER', 'http://mh4.loc/shop/admin/'); define('HTTP_CATALOG', 'http://mh4.loc/shop/'); // HTTPS define('HTTPS_SERVER', 'http://mh4.loc/shop/admin/'); define('HTTPS_CATALOG', 'http://mh4.loc/shop/'); // DIR define('DIR_APPLICATION', 'C:/apache/mh4.loc/www/shop/admin/'); define('DIR_SYSTEM', 'C:/apache/mh4.loc/www/shop/system/'); define('DIR_LANGUAGE', 'C:/apache/mh4.loc/www/shop/admin/language/'); define('DIR_TEMPLATE', 'C:/apache/mh4.loc/www/shop/admin/view/template/'); define('DIR_CONFIG', 'C:/apache/mh4.loc/www/shop/system/config/'); define('DIR_IMAGE', 'C:/apache/mh4.loc/www/shop/image/'); define('DIR_CACHE', 'C:/apache/mh4.loc/www/shop/system/storage/cache/'); define('DIR_DOWNLOAD', 'C:/apache/mh4.loc/www/shop/system/storage/download/'); define('DIR_LOGS', 'C:/apache/mh4.loc/www/shop/system/storage/logs/'); define('DIR_MODIFICATION', 'C:/apache/mh4.loc/www/shop/system/storage/modification/'); define('DIR_UPLOAD', 'C:/apache/mh4.loc/www/shop/system/storage/upload/'); define('DIR_CATALOG', 'C:/apache/mh4.loc/www/shop/catalog/'); 6. Меняю файл .htaccess, вместо RewriteBase / пишу RewriteBase /shop/ Захожу в админку по адресу mh4.loc/shop/admin/ - без проблем. Пытаюсь зайти на главную страницу mh4.loc/shop/ - редиректит на главную страницу домена - mh4.loc и показывает что-то типа такого: http://prntscr.com/k1hpf8 При этом версия 2.3.х без проблем перенеслась по такому же алгоритму. Что можно подковырять для исправление такой ситуации? PS пробовал на хостинге - то же самое, т.е. проблема не в настройках локального вэб-сервера. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Это популярное сообщение. admin Опубликовано: июля 2, 2018 Это популярное сообщение. Жалоба Поделиться Опубликовано: июля 2, 2018 4 часа назад, zyto сказал: При этом версия 2.3.х без проблем перенеслась по такому же алгоритму. Что можно подковырять для исправление такой ситуации? https://github.com/ocshop/ocshop/commit/bf5647f8a70281f99ebb63f5fd3b49991db4f2cb zyto 1 Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
zyto Опубликовано: июля 2, 2018 Автор Жалоба Поделиться Опубликовано: июля 2, 2018 Спасибо! Почти помогло. Единственное уточнение, у вас в коде: Скрытый текст //fix subfolder + $path = rtrim($url_info['path'], '/index.php'); При таком варианте у меня не работало, потому что после вычисления получался $path = "sho" (вместо shop) На всякий случай вот скрин из отладчика: http://prntscr.com/k1m55r Это от версии PHP зависит или баг? Сделал так: Скрытый текст - $path = rtrim($url_info['path'], '/index.php'); + $path = rtrim($url_info['path'], 'index.php'); - $seo_url = $url_info['scheme'] . '://' . $url_info['host'] . (isset($url_info['port']) ? ':' . $url_info['port'] : '') . $path . '/' . $seo_url; + $seo_url = $url_info['scheme'] . '://' . $url_info['host'] . (isset($url_info['port']) ? ':' . $url_info['port'] : '') . $path . $seo_url; На первый взгляд работает... Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
zyto Опубликовано: июля 2, 2018 Автор Жалоба Поделиться Опубликовано: июля 2, 2018 Проверил в песочнице, на PHP 7.2.4 - тоже выходит sho http://sandbox.onlinephpfunctions.com/code/7527fb51c7c2916a72d7d00d8df62651e2199053 Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
BuslikDrev Опубликовано: июля 2, 2018 Жалоба Поделиться Опубликовано: июля 2, 2018 17 часов назад, zyto сказал: Кого куда тянет? У меня на локалке стоит 5.х, попробовал в песке на 4.4.9 и 7.2.4 - результат одинковый, т.е. от версии РНР видимо не зависит... Понятно. Можно попробовать ещё это: rtrim($url_info['path'], '/index.php'); на такое поменять: Скрытый текст str_replace('/index.php', '', $url_info['path']); или stristr($url_info['path'], '/index.php', true); Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
zyto Опубликовано: июля 3, 2018 Автор Жалоба Поделиться Опубликовано: июля 3, 2018 Да, так пожалуй лучше. Надо бы это в новый релиз добавить. 2.1.0.2.1 Так и не удалось заставить работать. Обновился до 2.1.0.2.2 - на первый взгляд работает. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.