我希望为此特定路线设置子域
private void Form1_Load(object sender, EventArgs e)
{
try
{
using(WebClient WebClient = new WebClient())
{
WebClient.Headers.Add("User-Agent", "Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30");
MessageBox.Show(WebClient.DownloadString("https://www.habbo.com/api/user/avatars/check-name?name=123"));
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
以前,该网址曾与 get 'product_list/home'
类似。现在我希望网址为localhost:3000/product_list/home
我已修改了这样的路线
store.dev:3000/product_list/home
在/ etc / hosts中。我添加了store.dev如下
constraints subdomain: 'store' do
get 'product_list/home'
end
但是在开发环境中访问127.0.0.1 localhost
127.0.0.1 store.dev
时,我的主页就像store.dev:3000
一样。
但我想将我的子域限制为仅此路由localhost:3000
。
我面临的另一个问题是
当我访问时,http://store.dev:3000/product_list/home
我收到了这个
product_list/home
更新:
将主机文件中的条目从No route matches [GET] "/product_list/home"
更改为store.dev
后,我可以访问store.local.dev
但我的问题是我还可以访问其他页面,说我有store.local.dev:3000/product_list/home.
页面。 about
,但我不希望这种情况发生。如何将子域限制为仅一个特定路由
答案 0 :(得分:1)
您的示例和大多数其他答案中的示例实际上根本不使用子域名:如果您查看域名store.dev
,那么它实际上没有子域名,store.dev
是顶级域名/根域。子域的示例是:sub.store.dev
如果您将 / etc / hosts 文件中的条目从store.dev
更改为store.local.dev
,那么您的代码就可以使用。
<强>更新强>
要回答问题的第二部分(将路由限制为仅限根域):您可以通过将仅应在其他constraints
块中的根域上可用的路由包装为空来实现此目的子域:
constraints subdomain: '' do
get '/about'
end
答案 1 :(得分:1)
您的路线文件代码是否正确
constraints subdomain: 'store' do
get 'product_list/home'
end
为了测试localhost使用以下url,无需在主机文件中进行更改
store.lvh.me:3000
lvh.me
是使用127.0.0.1
https://reinteractive.net/posts/199-developing-and-testing-rails-applications-with-subdomains
答案 2 :(得分:0)
我认为您还需要将子域添加到/ etc / hosts文件中:
127.0.0.1 dev items.dev
答案 3 :(得分:0)
尝试将通配符子域添加到/ etc / hosts:
127.0.0.1 *.dev
或者,只需导航至http://items.lvh.me即可。 (此域的所有者将域和子域的所有DNS请求指向当前的127.0.0.1)
此外,您可能需要在启动服务器时绑定到正确的接口,因为127.0.0.1并不严格等同于localhost(默认情况下为rails服务器绑定的位置):
rails s -b 127.0.0.1
或
rails s -b 0.0.0.0 # all interfaces
请注意,后者可能被视为不安全,因为它会将您的开发服务器暴露给您的本地网络。
答案 4 :(得分:0)
来自Docs:
基于请求的约束
您还可以根据任何方式约束路线 Request对象上返回String的方法。
您指定基于请求的约束的方式与指定a的方式相同 段约束:
get 'photos', to: 'photos#index', constraints: { subdomain: 'admin' }
您还可以以块形式指定约束:
namespace :admin do constraints subdomain: 'admin' do resources :photos end end
我发现this link提供了一种在开发机器上创建子域路由的方法。如果这也没有解决您的问题,那么还有另一种方式here。
答案 5 :(得分:0)
我添加了另一个答案,因为问题已经从原来的问题发生了变化,而且我现有的答案已经不再适用了。
要确保您的子域store.domain.dev只有一个可用路由,您还需要将约束块中的路径 rest 包装起来:
# this matches store.domain.dev
constraints subdomain: 'store' do
get '/product_list/home'
# add a redirect for the root path so you don't get a 404
# when browsing to store.domain.dev (optional)
root '/', to: redirect('/product_list/home')
end
# this matches no subdomain and 'www' subdomain (i.e. domain.dev and www.domain.dev)
constraints subdomain: /^(|www)$/ do
# put ALL your other routes here
# ..
# root '/', to: 'home#index'
end
对于问题的第二部分,您应该尝试使用domain.dev
而不仅仅是dev
,否则可能会错误地解释子域名。
此外,您应该使用get '/product_list/home'
而不是仅使用Rails路由指南中指定的get 'product_list/home'
:http://guides.rubyonrails.org/routing.html