COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

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


zyto

Recommended Posts

Помогите решить проблему. Попробовал на 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 changed the title to OC.CMS/PRO 2.1.0.2.X не работают во вложенном каталоге

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

 

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

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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

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

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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