rails子域

时间:2011-12-07 19:54:21

标签: ruby-on-rails ruby-on-rails-3 subdomain wildcard-subdomain

我参加了本教程http://railscasts.com/episodes/221-subdomains-in-rails-3并尝试在http://ngtv2.info

中实施

但是我把代码放在routes.rb

之后

匹配'/'=> 'projects#show',:constraints => {:subdomain => /.+/}

然后输入kingpangilinan.ngtv2.info

浏览器说“找不到服务器”, Firefox无法在kingpangilinan.ngtv2.info找到服务器

感谢任何帮助。

3 个答案:

答案 0 :(得分:5)

您必须将DNS设置为指向您的网络服务器。只是告诉Rails回答特定域并不会设置DNS来做同样的事情。

$ nslookup kingpangilinan.ngtv2.info
** server can't find kingpangilinan.ngtv2.info: NXDOMAIN

使用域名提供商的界面或直接要求他们设置通配符DNS条目。

如果您使用的是Rails 3,则不应该使用Railscast(无论如何都是从2008年开始)。有一个更新的版本专门针对Rails 3:http://railscasts.com/episodes/221-subdomains-in-rails-3

顺便说一句:你不应该在没有任何保护的情况下部署尚未完成的应用程序。开发应该在本地或至少在密码安全网站后面进行。

答案 1 :(得分:4)

这与Rails有关没有,与DNS以及互联网的运作方式有关。

必须为ngtv2.info配置带有通配符子域条目的DNS区域,然后才能尝试设置Rails来捕获这些子域。

要在本地测试子域路由,应该尝试在您的计算机上运行该应用,并在http://lvh.me:3000而不是http://localhost:3000上浏览到该应用。然后你也可以浏览到http://anysubdomain.lvh.me:3000,Rails会发现它是一个子域名。

答案 2 :(得分:0)

如果要使用子域约束在本地计算机上进行开发,请通过添加

来修改/ etc / hosts
127.0.0.1       SUBDOMAIN.localhost.de

然后rails可以根据您的请求推断子域。确保使用在/ etc / hosts中指定的URL而不是localhost:3000。