Tambahkan subdomain ke URL localhost

104

Saya menulis aplikasi web yang berperilaku berbeda tergantung pada awalan url. Formatnya seperti:

   https://myprefix.mycompany.com

Aplikasi web berperilaku berbeda berdasarkan myprefix. Aplikasi web saya mengekstrak bagian itu dari URL dan menindaklanjutinya.

Namun, ketika saya menguji di lokal saya, saya menggunakan alamat localhost:

   https://localhost:1234

Saya tidak bisa melakukan sesuatu seperti:

   https://myprefix.localhost:1234

Apa cara terbaik bagi saya untuk menguji skenario ini?

Terimakasih banyak

Kevin
sumber
Berikut adalah solusi dari masalah ini stackoverflow.com/a/29629675/2950006
Mickel Chowdhury

Jawaban:

149

Sayangnya, karena localhostbukan domain yang tepat, Anda tidak dapat menambahkan subdomain seperti itu. Namun, Anda dapat mengelabui komputer Anda dengan berpikir bahwa ia memiliki domain tertentu dan mengujinya dengan cara itu. Misalnya, jika Anda memiliki sistem operasi berbasis UNIX, buka (sebagai root) file /etc/hostsdan tambahkan baris (atau baris) seperti ini:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com

Komputer Anda sekarang akan memperlakukan keduanya example.comdan subdomain.example.comsebagai miliknya sendiri. Jika Anda mengunjungi salah satunya di browser web Anda, pada prinsipnya mereka akan bekerja sama seperti localhost, tetapi server web Anda akan melihat domain yang benar di header Host-nya.

Matt Patenaude
sumber
Terima kasih banyak atas jawaban Anda. Inilah yang saya inginkan. Namun, aplikasi web saya berjalan pada port, katakanlah 1234. Saya mencari-cari dan orang-orang mengatakan tidak ada cara untuk menentukan nomor port di / etc / hosts. Apa cara terbaik untuk menentukan port?
Kevin
7
Anda hanya perlu menggunakan porta di URL Anda seperti biasa, misalnya http://subdomain.example.com:1234/whatever. Port sepenuhnya terpisah dari domain (domain digunakan untuk mengidentifikasi mesin, port digunakan untuk mengidentifikasi program mana pada mesin untuk berkomunikasi).
Matt Patenaude
Sebagai alternatif, jika Anda dapat menjalankan perangkat lunak Anda sebagai root (untuk pengujian), Anda dapat menggunakan port 80, yang merupakan default, jadi Anda tidak perlu menentukannya.
Matt Patenaude
4
Seseorang bisa saja membuat daftar nama domain setelah alamat ip: 127.0.0.1 example.com sub.example.com sub2.example.com...
automaton
6
Ini juga berfungsi untuk windows. File host di windows terletak di: C:\Windows\System32\drivers\etc\hosts. Anda perlu menyalin file ke tempat lain yang memiliki izin lebih rendah, (seperti desktop Anda), untuk mengeditnya dan kemudian menempelkannya kembali ke folder (untuk mengatasi izin).
Lindsay-Needs-Sleep
36

Saya tidak yakin tentang perilaku yang sama di windows. Saya sedang mengerjakan linux mint.

Anda dapat menggunakan lvh.me:portsebagai domain lokal. Anda dapat membayangkan bahwa proyek Anda diterapkan di localhost:portdomain ini.

Daripada sub.localhost:portAnda harus menggunakansub.lvh.me:port

UPD

sub.localhost:portbekerja di chrome. Firefox secara otomatis menambahkan www. di awal domain yang dimasukkan yang dapat menyebabkan masalah dengan pengujian subdomain

Vassily
sumber
Saya dapat mengonfirmasi ini berfungsi di Windows juga. Browser Internet Explorer, Edge, Firefox, dan Chrome bekerja dengan sempurna!
Jose A
Saya menggunakan firefox dan ujung chrome menyelamatkan hari saya, terima kasih!
ZekeMidas
2
Untuk fleksibilitas tambahan, Anda juga dapat menggunakan layanan nio.io atau xip.io. Mereka memungkinkan untuk memetakan alamat IP apa pun ke subdomain apa pun. Jadi misalnya, kolega Anda juga bisa menggunakan URL yang sama untuk mengakses aplikasi Anda. Misalnya jika alamat IP workstation Anda adalah 172.16.0.42, Anda dapat menggunakan https://myprefix.myapp.172.16.0.42.nip.io:1234dari PC Anda atau dari PC lain di intranet Anda.
mh8020
6

Untuk pengguna Windows, berdasarkan jawaban ini dan menurut komentar ini , Anda dapat mencapai ini dengan menambahkan port ke localhost melalui file host yang berada di jalur ini:

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

Dan tambahkan baris seperti berikut ini:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com
Shimmy Weitzhandler
sumber
1

Solusi Satu Baris untuk Windows

Buka PowerShell sebagai Administrator dan jalankan perintah berikut, ganti sub.mydomain.comdengan apa pun yang Anda inginkan.

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

Kerusakan:

  • `n - garis baru
  • 127.0.0.1 - alamat loopback
  • sub.mydomain.com - nama domain
  • | Out-File C:\Windows\System32\drivers\etc\hosts - menyalurkan string ke hosts
  • -encoding ASCII - pengkodean yang benar
  • -append- tambahkan ke akhir file (penting!)
Richard Dunn
sumber
1

Anda harus menggunakan .testdomain untuk hal-hal seperti itu. Untuk itulah .test. localhosttidak seharusnya memiliki subdomain apa pun.

Untuk melakukannya melanggar standar RFC yang disetujui. localhostmemiliki data A dan di lingkungan IPv6, data AAAA. Semua jenis catatan DNS lainnya, termasuk SOA dilarang.

Tanpa catatan SOA, itu tidak bisa menjadi puncak zona yang memiliki sub-catatan, jadi tidak ada subdomain atau delegasi yang diizinkan. Bahkan draf RFC baru-baru ini yang berjudul Biarkan localhost menjadi localhost konsisten dengan ini.

MR.X
sumber