Віртуальний сервер (Virtual Host) на Xampp для Opencart
Створення Віртуального Cервера (Virtual Host) для сайту Opencart на Xampp та Windows.
Розглянемо кілька варіантів роботи локального сервера Xampp.
Варіант 1. Все нормально працює на localhost.
Після встановлення Xampp папки з сайтами знаходяться в xampp\htdocs.
В нашому прикладі проєкту маємо папку з назвою ocstore3037. В ній знаходитьcя чиста установка ocStore 3.0.3.7.

Якщо вперше запустити сервер Xampp, то наш проєкт буде доступний за адресою: http://localhost/ocstore3037/
Перевіряємо сайт. Якщо Opencart та його компоненти нормально працюють, то далі нічого робити не потрібно.
Варіант 2. З'являються помилки в роботі Opencart на localhost
Перша поширена помилка - не працюють SEO URL. Як це виправити, детально описували раніше.
Другим моментом є те, що деякі модулі, вимагають url сайту без localhost для правильної роботи. Інакше, коли ви відкриваєте сторінку налаштувань модуля, видає 404 помилку (сторінку не знайдено).
Щоб це виправити необхідно розмістити сайт на віртуальному сервері (хості).
Створюємо віртуальний хост (Virtual Host) на Xampp.
1. Відкриваємо файл C:\xampp\apache\conf\extra\httpd-vhosts.conf, йдемо до низу та вставляємо:
<VirtualHost *:80>
DocumentRoot "C:/Mega/xampp/htdocs/ocstore3037"
ServerName ocstore3037.loc
</VirtualHost>
DocumentRoot - шлях до папки з сайтом на Xampp,
ocstore3037 - назва папки з сайтом Opencart
ocstore3037.loc - адреса за якою буде доступний сайт. Вона може бути будь якою. Проте, варто уникати адрес, що вже є в інтернеті, оскільки браузер може переходити на них, замість відкриття локального проєкту. Доведеться кожного разу вимикати інтернет, аби запустити проєкт.
2. Йдемо до файлу C:\Windows\System32\drivers\etc\hosts
Передусім, зробимо резервну копію файлу, наприклад, з назвою hosts_bak
Система Windows не завжди дозволяє редагувати файл hosts в поточному розташуванні. Оскільки для цього необхідні права адміністратора. Тому скопіюємо його на Робочий стіл для редагування.
Відкриваємо hosts та бачимо рядок
# 127.0.0.1 localhost
Скопіюємо його та вставимо внизу файлу. Видалимо символ хеш #.
127.0.0.1 localhost
127.0.0.1 - локальна адреса комп'ютера, може бути інша.
Нижче вставимо значення ServerName з попереднього файлу
127.0.0.1 ocstore3037.loc
Збережемо файл. Копіюємо його з заміною в C:\Windows\System32\drivers\etc\
Готово. Ми додали віртуальний хост для ocstore3037.loc. Якщо маєте кілька проєктів, можете додати кілька віртуальних хостів, кількість не обмежена.
Налаштуємо Opencart 3 для роботи на віртуальному хості.
В папці C:/Mega/xampp/htdocs/ocstore3037 відкриваємо файли config.php та admin/config.php
Видаляємо localhost з URL та .loc з шляхів до файлів.
В config.php:
<?php
// HTTP
define('HTTP_SERVER', 'http://localhost/ocstore3037.loc/');
// HTTPS
define('HTTPS_SERVER', 'http://localhost/ocstore3037.loc/');
// DIR
define('DIR_APPLICATION', 'C:/Mega/xampp/htdocs/ocstore3037.loc/catalog/');
define('DIR_SYSTEM', 'C:/Mega/xampp/htdocs/ocstore3037.loc/system/');
define('DIR_IMAGE', 'C:/Mega/xampp/htdocs/ocstore3037.loc/image/');
Замінюємо на:
<?php
// HTTP
define('HTTP_SERVER', 'http://ocstore3037.loc/');
// HTTPS
define('HTTPS_SERVER', 'http://ocstore3037.loc/');
// DIR
define('DIR_APPLICATION', 'C:/Mega/xampp/htdocs/ocstore3037/catalog/');
define('DIR_SYSTEM', 'C:/Mega/xampp/htdocs/ocstore3037/system/');
define('DIR_IMAGE', 'C:/Mega/xampp/htdocs/ocstore3037/image/');
В admin/config.php
<?php
// HTTP
define('HTTP_SERVER', 'http://localhost/ocstore3037.loc/admin/');
define('HTTP_CATALOG', 'http://localhost/ocstore3037.loc/');
// HTTPS
define('HTTPS_SERVER', 'http://localhost/ocstore3037.loc/admin/');
define('HTTPS_CATALOG', 'http://localhost/ocstore3037.loc/');
// DIR
define('DIR_APPLICATION', 'C:/Mega/xampp/htdocs/ocstore3037.loc/admin/');
define('DIR_SYSTEM', 'C:/Mega/xampp/htdocs/ocstore3037.loc/system/');
define('DIR_IMAGE', 'C:/Mega/xampp/htdocs/ocstore3037.loc/image/');
define('DIR_STORAGE', DIR_SYSTEM . 'storage/');
define('DIR_CATALOG', 'C:/Mega/xampp/htdocs/ocstore3037.loc/catalog/');
Замінюємо на:
<?php
// HTTP
define('HTTP_SERVER', 'http://ocstore3037.loc/admin/');
define('HTTP_CATALOG', 'http://ocstore3037.loc/');
// HTTPS
define('HTTPS_SERVER', 'http://ocstore3037.loc/admin/');
define('HTTPS_CATALOG', 'http://ocstore3037.loc/');
// DIR
define('DIR_APPLICATION', 'C:/Mega/xampp/htdocs/ocstore3037/admin/');
define('DIR_SYSTEM', 'C:/Mega/xampp/htdocs/ocstore3037/system/');
define('DIR_IMAGE', 'C:/Mega/xampp/htdocs/ocstore3037/image/');
define('DIR_STORAGE', DIR_SYSTEM . 'storage/');
define('DIR_CATALOG', 'C:/Mega/xampp/htdocs/ocstore3037/catalog/');
Якщо раніше використовували цей спосіб для налаштування SEO URL, то потрібно відредагувати htaccess.
RewriteBase /ocstore3037.loc/
Замінюємо на:
RewriteBase /
Результат
Перезапускаємо Apache та mySQL

Готово. Тепер сайт відкривається за новою адресою http://ocstore3037.loc/
