如何为在我的网站上注册的每个用户创建子域?例如userone.mysite.com和usertwo.mysite.com。
在php中可以使用apache虚拟主机完成,但我无法弄清楚如何在Ruby on Rails中执行相同操作。以下是如何在apache中完成的
<VirtualHost *:80>
ServerName www.mysite.com
ServerAlias mysite.com *.mysite.com
DocumentRoot /www/domain
</VirtualHost>
我浏览了很多博客但找不到解决方案。 请建议。
答案 0 :(得分:1)
<VirtualHost *:80>
ServerName mysite.com
ServerAlias *.my_site.com
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /var/www/html/my_site
<Directory /var/www/html/my_site>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
# Uncomment this if you're on Apache >= 2.4:
Require all granted
</Directory>
</VirtualHost>
并且不要忘记在DNS中更改您的域名的cname *条目
答案 1 :(得分:0)
除了Dinesh Saini回答 - 您还需要相应地更新Rails配置。例如,如果您需要深层子域,则应更改 staging.rb中的config.action_dispatch.tld_length,你应该重新检查routes.rb。
实例:我必须通过子域实现商店展示 - 示例网址 my-shop.shop.testapp.com。所以除了服务器配置更改之外我做了什么
constraints (lambda { |req| req.subdomains[1] == 'shop' }) do
get '/', to: 'shopes#show', as: :shop
end
在控制器中查找资源
Shop.find_by(id: request.subdomains[0])
我也设置了
config.action_dispatch.tld_length = 2
我这是为了暂存env,因为它有这样的URL staging.testapp.com所以我需要另一个子域级别。我认为对你而言,检查它是否有1是唯一的好处。