我想使用 React-Router 来处理访问者部分的大部分页面,并同时创建一个单页面应用程序。但是,我想确保如果用户输入 /admin
,他不会被“重定向”到 root_path
到目前为止,我只能将所有内容传递给通配符或进行“分隔”,如下所示:
root 'home#index'
# example 1
get '/*path' => 'home#index'
get '/articles' => 'home#articles_index'
# example 2
get '/articles/*all' => 'home#articles_index'
# vain try 1
get '/*path' => 'home#index', except: :admin
# vain try 2
get '/*path' => 'home#index', except: '/admin'
我发现了这些限制,但我意识到这是为了确保正确传递网址(即整数而不是字符串),但它不会将网址“列入黑名单”。
有什么想法吗?
提前谢谢
最佳答案
为此目的,您可以使用带有约束的通配符段。例如:
# config/routes.rb
Rails.application.routes.draw do
root to: 'home#index'
get '*subroute', to: 'home#index', constraints: { subroute: /(?!admin|login|logout).*/ }
# all another routes below
end
除非 URL 中包含“admin”、“login”或“logout”,否则这会将任何请求传递到 home#index
。
关于ruby-on-rails - 如何在我的路由中对除一种模式之外的所有路由使用通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48915677/