我遇到路线问题,试图谷歌但到目前为止没有出现。如果有人能够解释,如何工作和解决方案,那将是伟大的。
谢谢, 干杯:)
示例:
1)
默认网址:lvh.me:3000 /餐馆
默认网址工作正常,但一旦添加任何未知的子网域。
添加未知子域名:
blabla.lvh.me/restaurants
它仍然访问lvh.me/restaurants
,并显示子域名的网址。
好的,让我们从路线添加已知的子域名:
platform.lvh.me/restaurants
它仍然访问lvh.me/restaurants
,并显示子域名的网址。
管理员和平台子域的反应方式相同。
2)
同样的事情发生在:mobile
和其他额外路线上
路线:
namespace :admin, path: '/' do
root to: 'pages#index'
end
constraints subdomain: 'platform' do
namespace :platform, path: '/' do
resources :categories
root 'pages#index'
end
end
resources :restaurants
root 'pages#index'
end
答案 0 :(得分:0)
Rails路由搜索给定的URL以查找所有路由,无论是子域,还是约束......
示例:
默认网址:lvh.me/restaurants
如果要使用任何子域admin.lvh.me/restaurants
,它仍会从默认网址中找到并呈现。管理员子域dnt有restaurants
个网址。
<强>解决方案:强>
需要在每个子域之后添加:
match '*a' => redirect(path: '/'), via: :get
或渲染其他网页,例如404/500:
match '*a', :to => 'errors#not_found', via: :get
否则,将更进一步并从默认网址呈现。
namespace :admin, path: '/' do
root to: 'pages#index'
match '*a' => redirect(path: '/'), via: :get
end
constraints subdomain: 'platform' do
namespace :platform, path: '/' do
resources :categories
root 'pages#index'
match '*a' => redirect(path: '/'), via: :get
end
end
resources :restaurants
root 'pages#index'
match '*a' => redirect(path: '/'), via: :get
end