Додайте субдомен до URL-адреси localhost


102

Я пишу веб-програму, яка поводиться по-різному залежно від префіксу url. Формат приблизно такий:

   https://myprefix.mycompany.com

Веб-програма поводиться по-різному залежно від myprefix. Мій веб-додаток витягує цю частину з URL-адреси та діє на неї.

Однак, коли я тестую на своєму локалі, я використовую адресу localhost:

   https://localhost:1234

Я не вважаю, що роблю щось на зразок:

   https://myprefix.localhost:1234

Який для мене найкращий спосіб перевірити цей сценарій?

Дуже дякую


Ось вирішення цього питання stackoverflow.com/a/29629675/2950006
Мікель Чоудхурі

Відповіді:


146

На жаль, оскільки localhostце не належний домен, ви не можете додати до нього такий домен. Тим не менш, ти можеш обдурити комп’ютер, вважаючи, що він володіє певним доменом, і перевірити речі таким чином. Наприклад, якщо у вас є операційна система на базі UNIX, відкрийте (як кореневий) файл /etc/hostsі додайте такий рядок (або рядки), як це:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com

Тепер ваш комп’ютер буде поводитися як із собою, так example.comі subdomain.example.comз ним. Якщо ви заходите у будь-який із веб-браузера, вони працюватимуть однаково, в принципі, як localhostі ваш веб-сервер.


Велике спасибі за вашу відповідь. Це саме те, що я хочу. Однак мій веб-додаток працює на порту, скажімо, 1234. Я шукав навколо, і люди говорили, що немає можливості вказати номер порту в / etc / hosts. Який найкращий спосіб вказати порт?
Кевін

7
Ви збираєтеся повинні просто використовувати порт в URL , як зазвичай, наприклад, http://subdomain.example.com:1234/whatever. Порт повністю відокремлений від домену (домени використовуються для ідентифікації машини, порти використовуються для ідентифікації, з якою програмою на машині слід спілкуватися).
Matt Patenaude

Крім того, якщо ви можете запустити програмне забезпечення як root (для тестування), ви можете просто використовувати порт 80, який є типовим, тому вам не доведеться його вказувати.
Matt Patenaude

4
Можна просто перерахувати доменні імена після ip-адреси: 127.0.0.1 example.com sub.example.com sub2.example.com...
автомат

6
Це працює і для вікон. Хост - файл на вікнах знаходиться по адресу: C:\Windows\System32\drivers\etc\hosts. Вам потрібно буде скопіювати файл в інше місце, яке має нижчі дозволи (наприклад, на робочий стіл), щоб відредагувати його, а потім вставити назад у папку (щоб обійти дозволи).
Lindsay-Needs-Sleep

36

Я не впевнений у однаковій поведінці у вікнах. Я працюю над Linux mint.

Ви можете використовувати lvh.me:portяк локальний домен. Ви можете собі уявити, що ваш проект розгорнуто localhost:portна цьому домені.

Замість того sub.localhost:port, щоб використовуватиsub.lvh.me:port

UPD

sub.localhost:portпрацює на хром. Firefox автоматично додає www. на початку введеного домену, що може спричинити проблеми з тестуванням субдоменів


Я можу підтвердити, що це працює і в Windows. Браузери Internet Explorer, Edge, Firefox та Chrome працюють бездоганно!
Хосе А

Я використовував firefox, а хромовий наконечник врятував мені день, дякую!
ZekeMidas

2
Для додаткової гнучкості ви також можете скористатися послугами nio.io або xip.io. Вони дозволяють зіставити будь-яку IP-адресу з будь-яким субдоменом. Так, наприклад, ваші колеги також можуть використовувати ту саму URL-адресу для доступу до вашого додатку. Наприклад, якщо є IP-адреса робочої станції 172.16.0.42, ви можете скористатися https://myprefix.myapp.172.16.0.42.nip.io:1234з вашого ПК або з інших ПК у вашій інтрамережі.
mh8020,

6

Для користувачів Windows , на основі цього відповіді і на цьому коментар, ви можете досягти цього шляхом додавання портів для локального хоста через хости файл , який знаходиться на цьому шляху:

C:\Windows\System32\drivers\etc\hosts

І додайте до нього рядки, наведені нижче:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com

1

Однорядкове рішення для Windows

Відкрийте PowerShell від імені адміністратора та запустіть таку команду, замінивши sub.mydomain.comна те, що хочете.

"`n127.0.0.1    sub.mydomain.com" | Out-File C:\Windows\System32\drivers\etc\hosts -encoding ASCII -append

Зламатися:

  • `n - новий рядок
  • 127.0.0.1 - адреса зворотного зв'язку
  • sub.mydomain.com - Доменне ім'я
  • | Out-File C:\Windows\System32\drivers\etc\hosts - перевести рядок до hosts
  • -encoding ASCII - правильне кодування
  • -append- додати до кінця файлу (важливо!)

1

Ви повинні використовувати .testдомен для подібних речей. Це те, що .testдля. localhostне повинен мати жодних субдоменів.

Це порушує затверджені стандарти RFC. localhostмає запис A, а в середовищах IPv6 - запис AAAA. Усі інші типи записів DNS, включаючи SOA, заборонені.

Без запису SOA він не може бути вершиною зони, що має підзаписи, тому жодні субдомени та делегування не допускаються. Навіть нещодавній проект RFC під назвою „Нехай локальний хост буде локальним хостом” відповідає цьому.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.