Щоб відкрити локальний сайт за доменним ім’ям, додайте відповідність імені та IP-адреси у файл hosts і налаштуйте VirtualHost вебсервера. Але локальний домен сам по собі не активує ліцензію модуля. Можливість використання тестової копії та спосіб її активації потрібно уточнити для конкретного продукту.
Нижче — приклад для Apache 2.4, установленого безпосередньо на вашому комп’ютері, та адреси http://project.test. Для Docker, WSL, віртуальної машини або іншого вебсервера мережеві налаштування відрізнятимуться.
| Поняття | Що воно означає | Чого воно не робить |
|---|---|---|
| Localhost / 127.0.0.1 | Звернення до поточного комп’ютера через loopback | Не відкриває ваш сайт зовнішньому сервісу |
| Локальний домен | Ім’я, яке на вашому комп’ютері вказує на локальний сервер | Не реєструє публічний домен |
| Файл hosts | Локальна відповідність імені та IP-адреси | Не змінює публічний DNS і не налаштовує Apache |
| VirtualHost | Вибір сайту й каталогу для запиту до певного імені та порту | Не видає ліцензію і не створює HTTPS-сертифікат |
| Ліцензія модуля | Умови й механізм використання конкретного продукту | Не виправляє конфігурацію вебсервера |
Практичний порядок перевірки: спочатку переконайтеся, що відкривається потрібна локальна копія, а потім перевіряйте повідомлення модуля про активацію.
Універсальної відповіді немає: потрібно перевірити правила конкретного модуля та параметри вашої ліцензії. Не варто вважати, що куплена ліцензія автоматично охоплює будь-яку кількість локальних чи тестових копій.
Перед налаштуванням уточніть у постачальника:
www, піддомен, порт або інші параметри середовища;Якщо сайт відкривається, але модуль показує помилку ліцензії, зафіксуйте точний текст, назву й версію модуля та адресу локальної копії. Цих даних достатньо для початку перевірки; повний ключ у відкритому повідомленні не потрібен.
Для прикладу використаємо project.test. Зона .test зарезервована для тестування в RFC 2606. Ім’я потрібно налаштувати локально: сама назва project.test не запускає сервер.
Не використовуйте випадковий домен у реальній зоні на кшталт .site: він може належати іншому власнику. Не підмінюйте адресу робочого магазину без конкретної потреби — так легше переплутати тестове й бойове середовища.
Якщо для тестування потрібне визначене постачальником ім’я, спочатку погодьте його та правила активації.
Збережіть копію файлу перед редагуванням. Відкрийте його з правами адміністратора, не видаляючи наявні записи.
| Система | Типовий шлях |
|---|---|
| Windows | C:WindowsSystem32driversetchosts |
| Linux | /etc/hosts |
| macOS | /etc/hosts |
На Windows системний каталог може відрізнятися; відповідний шлях — %WinDir%System32driversetchosts. Призначення файлу описано в довідці Microsoft.
Додайте рядок:
127.0.0.1 project.test
У hosts вказують тільки IP та ім’я: без http://, номера порту та шляху до сторінки. Збережіть файл саме як hosts, без розширення .txt.
Ця зміна діє на комп’ютері, де відредаговано файл. На іншому ноутбуці або всередині контейнера потрібні власні налаштування.
Знайдіть активну конфігурацію Apache. У різних збірках це може бути httpd.conf, підключений файл із віртуальними хостами або каталог sites-available. Важливо, щоб створений файл справді підключався до конфігурації сервера.
Приклад для локального каталогу /var/www/project/public:
<VirtualHost 127.0.0.1:80> ServerName project.test DocumentRoot "/var/www/project/public" <Directory "/var/www/project/public"> Options -Indexes AllowOverride None Require local </Directory> </VirtualHost>
Замініть обидва шляхи на фактичний публічний каталог вашого сайту. На Windows це може бути C:/sites/project/public. Каталог public є не в кожному проєкті: вказуйте той, де розташована точка входу сайту.
ServerName визначає ім’я, а DocumentRoot — каталог. Детальніше: іменні VirtualHost в Apache.
Require local призначений для локального доступу; правила описані в документації mod_authz_host. Цей приклад не призначений для публічного staging або доступу колег із мережі.
Перевірте Listen. VirtualHost не змушує Apache слухати порт. Для окремого локального екземпляра можна використовувати:
Listen 127.0.0.1:80
Не додавайте цей рядок поверх наявного Listen 80: спочатку перевірте активні директиви та усуньте перекриття. Зміна Listen впливає на весь екземпляр сервера, тому не застосовуйте її бездумно до конфігурації з іншими сайтами. Дивіться налаштування адрес і портів Apache.
У наведеному мінімальному прикладі AllowOverride None вимикає обробку .htaccess. Для CMS із правилами маршрутизації потрібно дозволити необхідні директиви або перенести їх у конфігурацію VirtualHost.
Для правил RewriteEngine / RewriteRule зазвичай потрібні mod_rewrite та дозвіл класу FileInfo. Якщо .htaccess містить інші директиви, перевірте їх окремо. Не замінюйте значення на All лише для того, щоб приховати помилку. Пояснення: як Apache обробляє .htaccess.
Не змішуйте старі Order allow,deny і Allow from all з сучасним Require: Apache не рекомендує таку конфігурацію. Джерело: перехід з Apache 2.2 на 2.4.
Використовуйте команди саме того Apache, який обслуговує ваш сайт.
Для Debian/Ubuntu з установленим пакетом Apache:
sudo apache2ctl configtest sudo apache2ctl -S
Перша команда перевіряє синтаксис, друга показує конфігурацію віртуальних хостів. Якщо перевірка успішна, перезапустіть локальний сервер:
sudo systemctl restart apache2
На Windows, у каталозі з httpd.exe вашої збірки:
httpd.exe -t httpd.exe -S
Після успішної перевірки перезапустіть Apache через панель вашого локального середовища або його службу. Для macOS спосіб залежить від установленої збірки; systemctl не є універсальною командою для macOS.
Параметри -t і -S описані в офіційній довідці httpd.
Відкрийте http://project.test і перевірте ознаку тестового середовища: наприклад, помітний напис «Локальна копія». Перед роботою з копією використовуйте окрему базу даних і вимкніть бойові завдання надсилання повідомлень, платежів та синхронізації.
Для перевірки HTTP-відповіді можна виконати:
curl -I http://project.test
Якщо потрібно перевірити VirtualHost незалежно від hosts:
curl --noproxy "*" --resolve project.test:80:127.0.0.1 -I http://project.test
У Windows PowerShell за потреби використовуйте curl.exe. Опція --resolve задає адресу лише для цього запиту, не змінюючи hosts; --noproxy виключає вплив проксі на тест. Дивіться довідку curl.
Не кожен застосунок підтримує HEAD-запити, які надсилає -I. Якщо отримали 405, перевірте звичайний GET без -I. Відповідь 200 сама по собі також не підтверджує активацію модуля.
| Симптом | Що перевірити спочатку |
|---|---|
| Ім’я не знаходиться | Правильність hosts, відсутність .txt, збереження файлу, кеш і проксі |
| Connection refused | Чи запущено Apache, чи слухає потрібну адресу й порт |
| Відкривається інший сайт | ServerName, підключення файлу VirtualHost, результат -S |
| 403 Forbidden | Directory, права читання каталогу, правила доступу, журнал Apache |
| Головна працює, внутрішні сторінки дають 404 | Маршрутизацію CMS, mod_rewrite, правила .htaccess |
| Перенаправлення на робочий домен | Базову URL-адресу CMS, редиректи в конфігурації та плагінах |
| Помилка сертифіката | Відповідність сертифіката імені та довіру до його видавця |
| Сайт працює, модуль пише «ліцензія недійсна» | Умови тестової активації, домен і точний текст помилки |
Якщо бачите HTTP 500, перегляньте журнали вебсервера та застосунку. Це окремий діагностичний сценарій; дивіться що робити з помилкою 500.
Запис у hosts не створює HTTPS. Потрібні сертифікат для project.test, довіра до нього на вашому комп’ютері та налаштований HTTPS-віртуальний хост.
Для розробки можна використати mkcert: він створює локально довірені сертифікати, але не налаштовує вебсервер замість вас. Приватний ключ локального центру сертифікації rootCA-key.pem не слід передавати іншим або додавати до репозиторію.
Якщо браузер чи застосунок примусово переводить сайт на HTTPS, спочатку з’ясуйте джерело редиректу або вимоги HTTPS. Ігнорування попередження браузера не замінює правильне налаштування сертифіката.
Для зовнішнього сервісу localhost означає його власне середовище, а не ваш комп’ютер. Локальний запис hosts на вашому ПК не робить адресу доступною для CRM, платіжного сервісу чи маркетплейсу.
Для вхідних запитів може знадобитися окреме тестове середовище з доступною HTTPS-адресою або налаштований тунель. Перевіряйте вимоги конкретного сервісу до callback URL, підпису запитів і тестового режиму.
Вихідний API-запит із локального сайту та вхідний webhook — різні напрямки обміну. Працездатність одного не підтверджує іншого. Базове пояснення: що таке API-інтеграція.
Ми можемо перевірити, де виникає проблема: у локальному домені, конфігурації сервера, налаштуваннях сайту чи активації модуля.
Для першого звернення надішліть:
Напишіть на info@ciframe.com. Після уточнення завдання погодимо обсяг перевірки та наступні дії. Умови ліцензії стороннього продукту підтверджує його постачальник.
Для локального імені project.test, налаштованого через hosts, публічна реєстрація не потрібна. Для зовнішнього тестового середовища вимоги залежать від способу його розміщення.
Ні. Hosts змінює локальну відповідність імені та IP. Активація залежить від механізму та правил конкретного модуля.
Для наведеного прикладу з project.test — ні. Зміни виконуються локально й не впливають на публічний DNS робочого сайту.
Перевірте hosts, ServerName і підключення VirtualHost. Працездатність стандартної сторінки localhost не означає, що сервер уже налаштований для іншого імені.
З’ясуйте, яка програма його використовує. Для локального сервера можна вибрати інший вільний порт, узгодити його в Listen та VirtualHost і відкривати сайт, наприклад, як http://project.test:8080. Порт не додають у hosts.
Там сервер може працювати в іншому мережевому середовищі. Потрібно перевірити публікацію портів і адреси: 127.0.0.1 усередині контейнера не означає хост-комп’ютер. Наведений приклад розрахований на Apache безпосередньо на ПК.
Локальні файли й база можуть працювати без зовнішнього доступу, але активація ліцензії та інтеграції можуть потребувати інтернету. Це перевіряють окремо для кожного модуля й сервісу.
