我有以下子域名:lks.harabiz.com
& lkm.harabiz.com
,每个都有自己的数据库表。
当有人尝试使用URL:www.lkm.harabiz.com
时,正在使用的数据库表与lkm
不同,这些数据库表实际上属于www
,而不属于lkm
{1}}。
这个问题有两种解决方案:
www.lkm.harabiz.com
指向lkm.harabiz.com
。www.lkm.harabiz.com
使用实际属于lkm
的数据库表,而不是www
。我正在使用Rails 5.0.0.1,该应用程序是通过Heroku部署的。
我查看了DNS的内容,加上应用程序级别的内容,但我无法达到预期的效果。
答案 0 :(得分:2)
您可以使用Custom Elevator:
# application.rb
module MyApplication
class Application < Rails::Application
config.middleware.use Apartment::Elevators::Generic, Proc.new { |request| request.host.split('.')[-3] }
end
end
答案 1 :(得分:0)
只需将Top Level Domain增加1:
# config/environments/production.rb
Rails.application.configure do
config.action_dispatch.tld_length = 2
end
有关此选项的更多信息:http://guides.rubyonrails.org/configuring.html
关于它是如何工作的,有一点描述:http://api.rubyonrails.org/classes/ActionDispatch/Http/URL.html
答案 2 :(得分:0)
您可以使用以下代码
从config / routes.rb文件中捕获Rails.application.routes.draw do
get '', to: 'lkm_controllers#index', constraints: lambda { |r|
r.subdomain.present? && r.subdomain == "www.lkm"
}
get '', to: 'lks_controllers#index', constraints: lambda { |r|
r.subdomain.present? && r.subdomain == "www.lks"
}
# other resources
end
确保你输入上面的这两个命令,所以先检查它是否使用www.lkm或只是lkm
答案 3 :(得分:0)
使用这些不同表的方式是特定于应用程序的,因此您不应添加任何DNS交互代码,因为它会使您的代码易碎且不易移植,NOR修改heroku中的DNS选项或DNS条目。
您需要的是根据到达您的应用的HTTP请求的主机使用您想要的数据库。查看SELECT
COALESCE(SUM(CASE WHEN _type = 'book' THEN 1 ELSE 0 END), 0) AS books_count,
COALESCE(SUM(CASE WHEN _type = 'movie' THEN 1 ELSE 0 END), 0) AS movies_count
FROM selected_media
WHERE subscriber_id = $1
和https://apidock.com/rails/ActionController/AbstractRequest/request_uri即可。阅读有关框架的请求路由。 (或在此处输入您的路由代码以获得更多帮助)
答案 4 :(得分:0)
更改公寓的gem配置,并将“ www”添加到exclude_domains
在config/initializers/apartment/subdomain_exclusions.rb
中:
Apartment::Elevators::Subdomain.excluded_subdomains = ['www']