私は最近、既存の Rails 3 アプリケーションを標準バージョンとプレミアム バージョンに分離する作業を任されました。プレミアム バージョンには、既存のすべての機能が含まれており、新しいレイアウトと新しい機能が追加されています。理想的には、現在の URL の前に「premium.somesite.com」などのサブドメインを付けて、Premuim ユーザーにこのサイトにアクセスしてもらいたいです。変更したくない Web サイトの標準バージョンであり、デフォルトの URL で引き続きアクセスできます。 .
可能であれば、既存のビューとコントローラーにいくつかのロジックを追加して、サブドメインが使用されているかどうかに応じてリクエストがどのように処理されるかを判断したいと思います。
Rails 3でRailcast サブドメインをたどってみましたが、彼はブログ モデルとデータベース属性のコンテキストでサブドメインを使用しています。これはサブドメインでも可能ですか? どうすれば始められますか?
私が試したこと:
乗客が使用する apache httpd.conf ファイルに追加の VirtualHost を追加しました。
<VirtualHost *:80>
ServerName premium.mydomain.com
DocumentRoot /somewhere/../myapp
<Directory /somewhere/public>
Allow from all
Options -Multiviews
</Directory>
</VirtualHost>
私のroutes.rbに以下を追加しました
class PremiumSubdomain
def self.matches?(request)
request.subdomain == "premium"
end
end
MyApp::Application.routes.draw do
constraints(PremiumSubdomain) do
#all of my routes...
end
end
何が起こるのですか:
プレミアム サブドメインを使用してサイトに移動しようとすると、ドメインが見つかりません。route.rb に制約を追加すると、アプリケーションの残りの部分が既定の URL に何かをレンダリングできなくなります。