เพิ่มโดเมนย่อยไปยัง URL ของ localhost


111

ฉันกำลังเขียนเว็บแอปพลิเคชันที่ทำงานแตกต่างกันไปตามคำนำหน้า URL รูปแบบเป็นดังนี้:

   https://myprefix.mycompany.com

เว็บแอปทำงานแตกต่างกันไปตาม myprefix เว็บแอปของฉันแยกส่วนนั้นออกจาก URL และดำเนินการตามนั้น

อย่างไรก็ตามเมื่อฉันทดสอบในพื้นที่ของฉันฉันใช้ที่อยู่ localhost:

   https://localhost:1234

ฉันไม่ควรทำสิ่งที่ชอบ:

   https://myprefix.localhost:1234

วิธีใดเป็นวิธีที่ดีที่สุดสำหรับฉันในการทดสอบสถานการณ์นี้

ขอบคุณมาก


นี่คือวิธีแก้ปัญหานี้ stackoverflow.com/a/29629675/2950006
Mickel Chowdhury

คำตอบ:


157

ขออภัยเนื่องจาก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 วิธีที่ดีที่สุดในการระบุพอร์ตคืออะไร?
Kevin

7
คุณจะต้องใช้พอร์ตใน URL ของคุณตามปกติเช่นhttp://subdomain.example.com:1234/whatever. พอร์ตนี้แยกออกจากโดเมนโดยสิ้นเชิง (โดเมนใช้สำหรับระบุเครื่องพอร์ตใช้สำหรับระบุว่าโปรแกรมใดในเครื่องที่จะสื่อสารด้วย)
Matt Patenaude

หรือหากคุณสามารถเรียกใช้ซอฟต์แวร์ของคุณในฐานะรูท (สำหรับการทดสอบ) คุณสามารถใช้พอร์ต 80 ซึ่งเป็นค่าเริ่มต้นดังนั้นคุณจะไม่ต้องระบุ
Matt Patenaude

4
เราสามารถแสดงชื่อโดเมนหลังที่อยู่ IP: 127.0.0.1 example.com sub.example.com sub2.example.com...
automaton

7
ซึ่งใช้ได้กับ windows เช่นกัน ไฟล์โฮสต์บน windows อยู่ที่: C:\Windows\System32\drivers\etc\hosts. คุณจะต้องคัดลอกไฟล์ไปยังที่อื่นที่มีสิทธิ์ต่ำกว่า (เช่นเดสก์ท็อปของคุณ) เพื่อแก้ไขแล้ววางกลับลงในโฟลเดอร์ (เพื่อหลีกเลี่ยงการอนุญาต)
Lindsay-Needs-Sleep

38

ฉันไม่แน่ใจเกี่ยวกับพฤติกรรมเดียวกันที่ windows ฉันกำลังทำงานกับ linux mint

คุณสามารถใช้lvh.me:portเป็นโดเมนท้องถิ่น คุณสามารถจินตนาการได้ว่าโครงการของคุณถูกทำให้ใช้งานบนlocalhost:portโดเมนนี้

แทนที่จะsub.localhost:portใช้sub.lvh.me:port

UPD

sub.localhost:portทำงานที่ chrome Firefox เพิ่ม www โดยอัตโนมัติ ที่จุดเริ่มต้นของโดเมนที่ป้อนซึ่งอาจทำให้เกิดปัญหากับการทดสอบโดเมนย่อย


ฉันสามารถยืนยันได้ว่าสิ่งนี้ใช้ได้กับ Windows เช่นกัน เบราว์เซอร์ Internet Explorer, Edge, Firefox และ Chrome ทำงานได้อย่างไร้ที่ติ!
Jose A

ฉันใช้ firefox และ chrome tip ช่วยวันของฉันขอบคุณ!
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 ตามคำตอบนี้และตามความคิดเห็นนี้คุณสามารถทำได้โดยการเพิ่มพอร์ตไปยัง localhost ผ่านไฟล์โฮสต์ที่อยู่ในเส้นทางนี้:

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

และต่อท้ายบรรทัดดังต่อไปนี้:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com

1

One-Line Solution สำหรับ 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 ล่าสุดที่ชื่อว่า Let localhost be localhost ก็สอดคล้องกับสิ่งนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.