OC.CMS/PRO 2.1.0.2.X не работают во вложенном каталоге


zyto
 Поделиться

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

Помогите решить проблему. Попробовал на 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 пробовал на хостинге - то же самое, т.е. проблема не в настройках локального вэб-сервера.

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

Спасибо! Почти помогло.
Единственное уточнение, у вас в коде:

Скрытый текст

//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;

 

На первый взгляд работает...

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

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);

 

 

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

  • RHCk изменил(а) заголовок на OC.CMS/PRO 2.1.0.2.X не работают во вложенном каталоге

Да, так пожалуй лучше.
Надо бы это в новый релиз добавить.

 

2.1.0.2.1 Так и не удалось заставить работать.

Обновился до 2.1.0.2.2 - на первый взгляд работает.

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

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Показать вместо этого как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Нельзя вставлять изображения напрямую. Загрузите или вставьте изображения по URL.

 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу