Tôi không thể tìm ra giải pháp khả thi cho vấn đề này, mặc dù có một số câu hỏi tương tự ở đây và ở những nơi khác. Có vẻ như câu hỏi này chưa được trả lời cho Rails 3, vì vậy đây là:
Tôi có một ứng dụng hiện cho phép người dùng tạo miền phụ của riêng họ chứa phiên bản ứng dụng của họ. Trong khi trong Rails 2, bạn được phục vụ tốt nhất bằng cách sử dụng gem-fu miền phụ, trong phiên bản 3, nó đơn giản hơn đáng kể, theo Railscast - http://railscasts.com/episodes/221-subdomains-in-rails-3 .
Đó là công cụ tốt, nhưng tôi cũng muốn cung cấp tùy chọn để người dùng liên kết tên miền của riêng họ với tài khoản của họ. Vì vậy, mặc dù họ có thể có http://userx.mydomain.com , tôi cũng muốn họ chọn liên kết với http://userx.com .
Tôi đã tìm thấy một vài tài liệu tham khảo để thực hiện việc này trong Rails 2, nhưng những kỹ thuật đó dường như không hoạt động nữa (đặc biệt là kỹ thuật này: https://feefirors.com/blog/hosting-multiple-domains-from-a-single-rails -app / ).
Có ai có thể giới thiệu cách sử dụng các tuyến để chấp nhận một miền tùy ý và chuyển miền đó cho bộ điều khiển để tôi có thể hiển thị nội dung thích hợp không?
Cập nhật : Bây giờ tôi đã có hầu hết câu trả lời, nhờ phản hồi kịp thời của Leonid và một cái nhìn mới về mã. Cuối cùng, nó yêu cầu bổ sung vào mã Tên miền phụ hiện có mà tôi đang sử dụng (từ giải pháp Railscast) và sau đó thêm một chút vào route.rb. Tôi vẫn chưa đến đó nhưng tôi muốn đăng những gì tôi có cho đến nay.
Trong lib / subdomain.rb:
class Subdomain
def self.matches?(request)
request.subdomain.present? && request.subdomain != "www"
end
end
class Domain
def self.matches?(request)
request.domain.present? && request.domain != "mydomain.com"
end
end
Tôi đã thêm lớp thứ hai để bắt chước lớp thứ nhất, được biết là đang hoạt động. Tôi chỉ cần thêm một điều kiện đảm bảo rằng miền đến không phải là miền mà tôi đang lưu trữ trang web chính.
Lớp này được sử dụng trong các route.rb:
require 'subdomain'
constraints(Domain) do
match '/' => 'blogs#show'
end
constraints(Subdomain) do
match '/' => 'blogs#show'
end
Ở đây, tôi đang thêm mã miền phụ hiện có (một lần nữa, nó hoạt động tốt) với một đoạn thơ để kiểm tra Tên miền. Nếu máy chủ này phản hồi với miền đó và nó không phải là miền mà trang web chính hoạt động, hãy chuyển tiếp đến bộ điều khiển được chỉ định.
Và trong khi điều đó dường như đang hoạt động, tôi vẫn chưa hoàn toàn thấy mọi thứ hoạt động, nhưng tôi nghĩ vấn đề cụ thể này đã được giải quyết.