Bu soruna uygulanabilir bir çözüm bulamadım, ancak burada ve başka yerlerde benzer sorulara rağmen. Bu sorunun Rails 3 için yanıtlanmamış olması muhtemel görünüyor, bu yüzden işte burada:Tek bir uygulamada birden çok etki alanını işlemek için yönlendirmeler raylar
Şu anda kullanıcıların uygulama örneklerini içeren kendi alt etki alanlarını oluşturmalarına izin veren bir uygulamaya sahibim. Rails 2'de en iyi subdomain-fu gemini kullanarak hizmetinizdeyken, 3. sürümde, Railscast - http://railscasts.com/episodes/221-subdomains-in-rails-3'a göre oldukça daha basittir.
Bu iyi bir şey, ancak kullanıcıların kendi alan adlarını kendi hesaplarıyla ilişkilendirmelerini de sağlamak istiyorum. Yani http://userx.mydomain.com olabilir, onlar da ilişkili http://userx.com sahip olmayı tercih ederim.
Rails 2'de bunu yapmak için birkaç başvuru buldum, ancak bu teknikler artık işe yaramıyor (özellikle bu: http://feefighters.com/devblog/2009/01/21/hosting-multiple-domains-from-a-single-rails-app/).
Herhangi biri isteğe bağlı bir etki alanını kabul etmek ve bir denetleyiciye iletmek için rotaları kullanmanın bir yolunu önerebilir, böylece uygun içeriği gösterebilir miyim?
Güncelleştirme: Leonid'in zamanında yanıtı ve kodun yeni görünümü sayesinde şimdi bir yanıtın çoğunu aldım. Nihayetinde kullandığım (Substream çözümünden) mevcut Subdomain koduna bir ekleme ve ardından route.rb'ye bir bit eklenmesi gerekiyordu. Henüz oraya gitmiyorum ama şu ana kadar sahip olduğum şeyi yayınlamak istiyorum. lib/subdomain.rb olarak
: I çalışma bilinen birinci taklit ikinci sınıf ekledik
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
. Sadece gelen alanın ana siteye ev sahipliği yaptığım yer olmamasını sağlayan bir koşul eklemekteyim.
Bu sınıf routes.rb kullanılır: Burada
require 'subdomain'
constraints(Domain) do
match '/' => 'blogs#show'
end
constraints(Subdomain) do
match '/' => 'blogs#show'
end
, ben Domain kontrol etmek için bir dörtlük ile mevcut alt alan kodunu (yine düzgün şekilde çalışıyorsa) prepending ediyorum. Bu sunucu söz konusu alana yanıt veriyorsa ve ana sitenin çalıştığı, belirtilen denetleyiciye yönlendirilen değil.
Ve bu işe yarıyor gibi gözükse de, henüz her şeyin işe yaramadığını düşünüyorum, ancak bu özel sorunun çözüldüğünü düşünüyorum.
http://guides.rubyonrails.org/routing.html#advanced-constraints başına gibi, Rails 3 aslında basittir
Düzenlemeleriniz için çok teşekkürler, Aaron. Şu an aynı durumla uğraşıyorum. Bir takip sorusu olarak, sunucunuza yönlendirilmekte olan herhangi bir etki alanını kabul etmesini nasıl sağlayabilirsiniz? .Conf dosyasında bir ayar olacağını varsayalım, ama ne olduğundan emin değilim.Herhangi bir yardım takdir edilecektir! – deadwards
Aaron, seninleyim. Ben de aynı şeyi yapmak istiyorum. Ama etki alanını kodlamak istemiyorum. Her şey bölge dosyaları ve web sunucusu yeniden başlatılmadan programlı olarak yapılmasını istiyorum. –
Michael, sorunu ters çevirmeniz gerekiyor. Açıkça, uygulamanız için olan rotaları (örneğin, kayıt) bir ana makine veya alt alan sınırlamasıyla açıkça belirtin ve yeniden kodlayın, ardından ana yollarınızı "herhangi bir etki alanı veya alt etki alanı" olarak kabul edin. Bu durumda, mevcut etki alanı veya alt etki alanını aramak ve doğru müşteriye eşlemek için denetleyicilerinizin sorumluluğu. –