Heroku / GoDaddy: ส่งโดเมนเปล่าไปที่ www [ปิด]


142

ฉันกำลังพยายามหาวิธีหาโดเมนเปล่าสำหรับเว็บไซต์ของฉันเพื่อเปลี่ยนเส้นทางไปยังโดเมน www ฉันใช้ Heroku และมีโดเมนจาก GoDaddy เนื่องจาก Heroku บันทึก A ของฉันจึงถูกตั้งค่าเป็น:

@: 75.101.145.87

@: 75.101.163.44

@: 174.129.25.170

และ www CNAME ของฉันชี้ไปที่ proxy.heroku.com

ฉันดูทั่วอินเทอร์เน็ตแล้ว แต่ไม่สามารถหาคำตอบง่ายๆฟรีสำหรับวิธีการเปลี่ยนเส้นทางนี้ บางคำตอบพูดคุยเกี่ยวกับการใช้บริการแบบชำระเงินซึ่งฉันไม่ต้องการทำและคนอื่นพูดถึงการเข้าไปและแก้ไขการตั้งค่า Heroku แต่จริงๆแล้วก็ไม่ได้ให้คำอธิบายอะไรมากมาย ตอนนี้ถ้าคุณไปที่โดเมนเปล่าของฉันมันเป็นเพียง Heroku ที่บอกว่าไม่มีแอพดังกล่าวอยู่ในขณะที่ถ้าคุณไปที่โดเมน www ของฉันมันเป็นแอพของฉัน


8
คำถามที่พบบ่อย Heroku เพียงบอกวิธีการเปลี่ยนเส้นทางด้วย DNSimple หน้าสนับสนุนของพวกเขาเชื่อมโยงไปยัง StackOverflow
Andrew Latham

32
ฉันคิดว่าการตอบสนองของ Emil ค่อนข้างรุนแรงในเว็บไซต์นี้เป็นแหล่งข้อมูลสำหรับการแก้ปัญหาที่เรามีตลอดการเดินทางของการเขียนโปรแกรมและนั่นเป็นปัญหาที่ฉันมีตอนนี้! : D
Daniel Morris

สิ่งนี้อาจถูกปิดเป็น Dupe แทนที่จะเป็น Off-Topic: stackoverflow.com/questions/16022324/…
Chris Moschini

2
@ChrisMoschini คำตอบที่ยอมรับในคำถามที่คุณอ้างอิงไม่ทำงานบน GoDaddy เพราะ GoDaddy ไม่สนับสนุนระเบียน ALIAS เพียง CNAME นี่เป็นคำถามของฉันเอง
Topher Hunt

1
ไม่ว่าจะมีการตั้งค่าระเบียน A ใดมีความเป็นไปได้ที่จะมีโดเมนเปล่าที่ชี้ไปยัง heroku โดยตรง เราสามารถตั้งค่าให้ส่งเส้นทางwwwที่ CNAME ชี้ไปyour-app-name.herokuapp.comเท่านั้น
Chetabahana

คำตอบ:


231

เกี่ยวกับ GoDaddy ใช้คุณลักษณะ "ส่งต่อ" การติดตั้งไปข้างหน้าจากการyourdomain.com www.yourdomain.comคุณลักษณะการส่งต่อสามารถเข้าถึงได้ในตัวจัดการโดเมนที่ด้านล่างของส่วน "ข้อมูลโดเมน":

การส่งต่อโดเมนใน GoDaddy

หากคุณทำเช่นนี้การเข้าชม yourdomain.com ทั้งหมดจะถูกส่งไปที่แอป Heroku CNAME (ซึ่งเป็นวิธีการที่ดีกว่า )

อย่างไรก็ตามหนึ่งบันทึกหากคุณอยู่ในกอง Cedarอย่าใช้proxy.heroku.comสำหรับโฮสต์ของwwwCNAME ของคุณ your-app-name.herokuapp.comแทนที่จะใช้ รายละเอียดเหล่านี้จะครอบคลุมที่นี่

GoDaddy ยังระบุด้วยว่าเพื่อให้ชื่อโดเมนของคุณส่งต่อเรคคอร์ด A จะต้องชี้ไปที่ 64.202.189.170 หรือต้องอยู่ระหว่างช่วงต่อไปนี้: 50.63.202.1 - 50.63.202.31 หรือ 184.168.221.1 - 184.168.221.31


14
สิ่งนี้จะสร้างคำเตือน / ข้อผิดพลาดหากคุณใช้ SSL เป็น heroku อ้างสิทธิ์? พวกเขากล่าวว่าหาก https: // example.com ถูกเปลี่ยนเส้นทางมีคำเตือน
Jaqx

2
@jaqx สิ่งนี้เกิดขึ้นกับฉันคุณหาวิธีหลีกเลี่ยงผู้ใช้ที่ได้รับคำเตือนนี้หรือไม่?
jackerman09

3
@ jackerman09 ฉันเบื่อความยุ่งยากและเปลี่ยนไปใช้ DNSimple
Jaqx

5
@Matt ไม่มีทางที่จะทำสิ่งนี้กับ GoDaddy ใช้คุณสมบัติ ALIAS / ANAME ของผู้ให้บริการรายอื่นเช่น DNSimple หรือ DNS Made Easy หากคุณต้องการ
Ryan Daigle

3
@ RyanDaigle ขอบคุณ Ryan ฉันแนะนำให้ทุกคนออกจาก godaddy ด้วยเหตุผลมากกว่าหนึ่งข้อ NameCheap.comคือคนที่ฉันใช้ตอนนี้ พวกเขายอดเยี่ยมและพวกเขาสนับสนุนสิ่งที่ฉันพยายามทำ นอกจากนี้ NameCheap ยอมรับBitcoin
Matt

22

คุณสามารถใช้http://wwwizer.comเพื่อส่งต่อจากโดเมนที่ไม่มีการปิดบังไปยัง www ของคุณ ใน GoDaddy ในตัวจัดการ DNS ภายใต้ระเบียน A ในประเภท @ header ใน 174.129.25.170 พวกเขาจะเปลี่ยนเส้นทางจากโดเมนที่ไม่มีการปิดบังไปยังโดเมนที่มี www โดยอัตโนมัติ ข้างหน้ามัน


5
จ่ายค่าธรรมเนียมอื่นให้กับคนอื่นทำไม
Benjamin

4
คุณครับเป็นผู้ช่วยชีวิต @Vezu: การส่งต่อที่ไม่ใช่ ssl นั้นฟรีอย่างสมบูรณ์ คุณเพียงแค่ชี้ระเบียน A ของคุณสำหรับโดเมนที่ไม่มีการปิดบังไปยังที่อยู่ IP นั้นและจะเปลี่ยนเส้นทางเบราว์เซอร์ไปยังโดเมน www คุณไม่จำเป็นต้องมีบัญชีกับพวกเขา
P O'Conbhui

ฉันกำลังพยายามรวม wwwizer เข้าด้วยกันและในบันทึก A ของฉันฉันมีโฮสต์เป็น "@" และคะแนนเป็น 174.129.25.170 ตามคำแนะนำของ wwwizer แต่ฉันได้รับหน้าข้อความแสดงข้อผิดพลาดเมื่อฉันเยี่ยมชมโดเมนเปล่าของฉัน! ฉันทำสิ่งนี้ถูกต้องหรือไม่?
tx291

7

ในตัวแก้ไขโซน DNS ของ GoDaddy คุณจะต้องกำหนดค่าระเบียน CNAME ของคุณ www ให้ชี้ไปที่ @ ใน A Record ของคุณคุณจะใช้ wildcard (*) เพื่อชี้ไปยังที่อยู่ IP และ A Record ที่สองที่ใช้ @ เป็นโฮสต์ที่จะชี้ไปยังที่อยู่เว็บด้วย ทางนี้,

subdomain1.example.com will forward to your IP
www.example.com will forward to your IP
silly.example.com will forward to your IP
anything.example.com will forward to your IP

ป้อนคำอธิบายรูปภาพที่นี่

คำถามที่พบบ่อย

ฉันสามารถชี้ * .mydomain.com ไปยังแอป Heroku ของฉันได้หรือไม่

ใช่การใช้คุณสมบัติ Custom Domains ฟรีของ Heroku คุณสามารถชี้โดเมนไวด์การ์ดไปยังแอปพลิเคชันของคุณ

ฉันควรใช้ที่อยู่ IP ใดเพื่อชี้โดเมนที่กำหนดเองของฉันไปที่ Heroku

Heroku stack stack ใช้กลุ่มของที่อยู่ IP ที่สามารถเปลี่ยนแปลงได้ตลอดเวลาและไม่รองรับการใช้ระเบียน A เพื่อชี้ไปที่แอปของคุณ เพื่อให้แน่ใจว่าโดเมนของคุณจะชี้ไปยังตาข่ายเส้นทางอย่างถูกต้องให้กำหนดค่าโดเมนย่อย (เช่น www ใน www.example.org) โดยใช้ระเบียน CNAME:

If the app is on…   Then CNAME the subdomain to
Bamboo  yourapp.heroku.com
Cedar   yourapp.herokuapp.com

ควรหลีกเลี่ยงโดเมนแบบ Naked (หรือ bare / apex) (เช่น example.org) เนื่องจากความพร้อมใช้งานและผลที่ตามมา

ทำไมฉันไม่สามารถเพิ่ม subdomain.mydomain.com สำหรับแอปของฉันได้

ในบางกรณีการพยายามเพิ่มโดเมนที่กำหนดเอง (เช่น subdomain.mydomain.com) สำหรับแอปอาจทำให้เกิดข้อผิดพลาดดังนี้:

 ! mydomain.com is owned by another user

แอปพลิเคชันทั้งหมดสำหรับโดเมนพื้นฐานที่กำหนดต้องเป็นเจ้าของโดยบัญชี Heroku เดียวกัน ข้อผิดพลาดด้านบนหมายความว่ามีคนอื่นเพิ่มโดเมนที่กำหนดเอง mydomain.com ไปยังหนึ่งในแอพของพวกเขา


1
ที่อยู่ IP และที่อยู่เว็บสำหรับ Heroku จะเป็น appname.heroku.com หรือ proxy.heroku.com หรือไม่
Andrew Latham

1
คุณควรอ่านบทความนี้จริง ๆ คือdevcenter.heroku.com/articles/custom-domainsเพราะมันครอบคลุมทุกอย่างที่คุณต้องการจะทำ
kobaltz

1
วิธีการนี้ชี้ CNAME wwwไปยัง @ ซึ่งยังคงกำหนดเส้นทางการรับส่งข้อมูลไปยังที่อยู่ IP คงที่ (ซึ่งมีข้อเสียทั้งหมดเหมือนกับ A-records) ใช้การเปลี่ยนเส้นทางระดับบนสุดใน GoDaddy สิ่งนี้เรียกว่า "การส่งต่อ" แทน
Ryan Daigle

5

หากคุณมีการตั้งค่าที่อยู่ IP ในโดเมนเปล่าและ www cname จะเป็น yourappname.herokuapp.com สิ่งที่คุณต้องทำคือใช้สิ่งที่ต้องการRackRewriteในแอปพลิเคชันของคุณเพื่อเปลี่ยนเส้นทางคำขอเมื่อมาถึงแอปพลิเคชันของคุณ

สิ่งที่คุณต้องการตั้งค่าคือคำขอใด ๆ ไปยังโดเมนเปล่าจะถูกเปลี่ยนเส้นทางไปยังที่อยู่ www ของคุณ หลังจากทำตามคำแนะนำในการติดตั้งให้เพิ่ม initializer ใน config / initializers

 ApplicationName::Application.config.middleware.insert_before(Rack::Lock, Rack
 r301 %r{.*}, 'http://www.yourdomain.com$&', :if => Proc.new {|rack_env
  rack_env['SERVER_NAME'] != 'www.yourdomain.com'
 }
 end if Rails.env == 'production'

ซึ่งบอกว่าถ้า URL ที่ร้องขอไม่ใช่ www.yourdomain.com 301 จะเปลี่ยนเส้นทางไปยัง www.yuordomain.com แต่จะทำงานเมื่อมีการผลิตเท่านั้น


1
เป็นการดีที่จะทำในระดับ DNS โดยหลีกเลี่ยงการเดินทางผ่านที่อยู่ IP คงที่ของ Heroku นอกจากนี้ไม่แน่ใจว่านี่เป็นแอพ Ruby หรือไม่?
Ryan Daigle

Ryan การเปลี่ยนเส้นทางไม่สามารถทำได้ในระดับ DNS พวกเขามักจะทำโดย HTTP
Emil Vikström

ทำไมเป็นเครื่องมือเริ่มต้นและทำไมไม่เพียงวางไว้ในการกำหนดค่าสภาพแวดล้อมการผลิต?
ckarbass

เมื่อฉันใช้ heroku + โดเมน custome ของฉันฉันต้องมีระเบียน A ที่ชี้ไปที่ heroku หรือไม่ ถ้าใช่มันมีค่าคืออะไร?
Alan Coromano

3

เพื่อให้สามารถทำงานกับ Network Solutions ได้:

Network Solutions ชี้ yourdomain.com ไปที่ www.yourdomain.com นี่คือวิธี

  1. ภายในตัวจัดการบัญชีเลือกชื่อโดเมนของฉัน

  2. เลือกชื่อโดเมนที่คุณต้องการจัดการ

  3. ในกล่องสีเขียวให้เลือกChange Where Domain Points

  4. เลือกAdvanced DNSจากนั้นทำต่อ

  5. ก่อนอื่นให้แก้ไขระเบียน A โดยเลือกแก้ไขระเบียน

    สำหรับ "@ none" ป้อนที่อยู่ IP ต่อไปนี้ 205.178.189.129 ล้างข้อมูลสำหรับ "www" และ "* (อื่น ๆ ทั้งหมด)"จากนั้นเลือกทำต่อ

  6. ขั้นที่สองแก้ไขชื่อแทนโฮสต์ (ระเบียน CNAME) โดยเลือกแก้ไขระเบียน CNAME

    ป้อน "www" ในคอลัมน์ Alias

    ปล่อยให้ TTL ตั้งค่าเป็น 7200 แต่ในบรรทัดเดียวกันให้ป้อนเซิร์ฟเวอร์ชื่อที่ให้บริการโดยบล็อกในส่วนโฮสต์อื่น [IE ติดตามคำแนะนำของ HEROKU ทันที www -> yourapp.herokuapp.com (Cedar Stack)]

    เลือกทำต่อ

ตอนนี้รอและตรวจสอบโดเมนด้วยคำสั่งเทอร์มินัลต่อไปนี้:

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