URL に /account.111 または /profile.111 を入力できます。これらのルートが Rails アプリケーションによって受け入れられないようにすることは可能ですか?
3 に答える
1
あなたはフォーマットを制約するかもしれません、これはうまくいくはずです
get '/account', constraints: { format: 'html' }
しかし、あなたが何を達成しようとしているのかはまだわかりません。誰かがフォーマットに数字を入れるのはなぜですか?
編集
すべてのルートを制約ブロックに入れることができますが、それは本当にスマートでも効果的でもないと思います
constraints: { format: 'html' } do
...
end
于 2013-06-20T10:21:46.613 に答える
0
constraints
上にブロックを追加するだけroutes.rb
#config/routes.rb
constraints(EndingWithDigit) do
match '*path' => redirect('/404')
end
次に、クラスEndingWithDigit
を作成しますlib/ending_with_digit.rb
#lib/ending_with_digit.rb
class EndingWithDigit
def self.matches?(request)
path = request.fullpath
if path =~ /^\/[\w]+[.]{1}+[\d]+/
true
else
false
end
end
end
今、それを含めますconfig/initializers/
#config/initializers/constraints.rb
require "ending_with_digit.rb"
Ruby 正規表現をチェックして、404 に送信する URL を確認できます。
于 2013-09-07T18:42:30.410 に答える