Iris có hình thức đơn giản nhất được biết đến để đăng ký tên miền phụ vào một ứng dụng. Tất nhiên bạn luôn có thể sử dụng nginx hoặc caddy để quản lý trong sản xuất.

Tên miền phụ được phân tách thành hai loại: static và dynamic/wildcard.

  • Static: khi bạn biết subdomains, tức là: analytics.mydomain.com
  • Wildcard : khi bạn không biết subdomain nhưng bạn biết rằng đó là trước một subdomains hoặc root subdomains, tức là: user_created.mydomain.com, otheruser.mydomain.com như username.github.io

Chúng ta sử dụng các phương thức Subdomain và WildcardSubdomain của iris.Party hoặc iris.Application để đăng ký tên miền phụ.

Phương thức Subdomains trả về một Party mới chịu trách nhiệm đăng ký các tuyến đến "tên miền phụ" cụ thể này.

Sự khác biệt duy nhất so với một Party thông thường là nếu được gọi từ một party con thì tên miền phụ sẽ được thêm vào đường dẫn thay vì được nối thêm. Vì vậy, nếu app.Subdomain("admin").Subdomain("panel") thì kết quả là: "panel.admin.".

Subdomain(subdomain string, middleware ...Handler) Party

Phương thức WildcardSubdomain trả về một Party mới chịu trách nhiệm đăng ký các tuyến đến một tên mền phụ động, wildcard(ed). Một tên miền phụ động (dynamic subdomain) là một tên miền phụ có thể xử lý mọi yêu cầu tên miền phụ. Máy chủ sẽ chấp nhận bất kỳ tên miền phụ nào (nếu không tìm thấy tên miền phụ tĩnh) và nó sẽ tìm kiếm và thực thi các trình xử lý của Party.

WildcardSubdomain(middleware ...Handler) Party

Ví dụ :

// [app := iris.New...]
admin := app.Subdomain("admin")

// admin.mydomain.com
admin.Get("/", func(ctx iris.Context) {
    ctx.Writef("INDEX FROM admin.mydomain.com")
})

// admin.mydomain.com/hey
admin.Get("/hey", func(ctx iris.Context) {
    ctx.Writef("HEY FROM admin.mydomain.com/hey")
})

// [other routes here...]

app.Run(iris.Addr("mydomain.com:80"))

Để phát triển cục bộ, bạn sẽ phải chỉnh sửa máy chủ của mình, ví dụ: trong hệ điều hành windows, hãy mở tệp C:\Windows\System32\Drivers\etc\hosts và nối thêm:

127.0.0.1 mydomain.com
127.0.0.1 admin.mydomain.com

Để chứng minh rằng tên miền phụ hoạt động như mọi Party thông thường khác, bạn cũng có thể đăng ký tên miền phụ bằng phương pháp thay thế bên dưới:

adminSubdomain:= app.Party("admin.")
// or
adminAnalayticsSubdomain := app.Party("admin.analytics.")
// or for a dynamic one:
anySubdomain := app.Party("*.")

 Ngoài ra còn có một phương thức iris.Application cho phép đăng ký quy tắc chuyển hướng toàn cầu cho các tên miền phụ.

SubdomainRedirect thiết lập (hoặc thêm nếu được sử dụng nhiều lần) một trình bao bọc bộ định tuyến chuyển hướng (StatusMovedPermanently) một tên miền (phụ) sang tên miền phụ khác hoặc nhanh nhất có thể trước khi thực hiện trình xử lý của tuyến.

Nó nhận được hai đối số, chúng là các vị trí from và to/target, 'from' cũng có thể là tên miền phụ wildcard như (app.WildcardSubdomain()) 'to' không được phép trở thành một wildcard vì những lý do rõ ràng, 'from' có thể là tên miền gốc (ứng dụng) khi 'to' không phải là tên miền gốc và ngược lại.

SubdomainRedirect(from, to Party) Party

Sử dụng

www := app.Subdomain("www")
app.SubdomainRedirect(app, www)

Ở trên sẽ chuyển hướng đến tất cả http(s) ://mydomain.com/%anypath% sang http(s)://www.mydomain.com/%anypath%.

Context cung cấp bốn phương thức chính khi làm việc với các tên miền phụ có thể hữu ích cho bạn.

Sử dụng

func info(ctx iris.Context) {
    method := ctx.Method()
    subdomain := ctx.Subdomain()
    path := ctx.Path()

    ctx.Writef("\nInfo\n\n")
    ctx.Writef("Method: %s\nSubdomain: %s\nPath: %s", method, subdomain, path)
}

Phần tiếp theo chúng ta sẽ tìm hiểu về Wrap the Router