Comment rediriger vers la page d'erreur 404 dans les itinéraires.rb?
Comment puis-je rediriger une url incorrecte de la page d'erreur 404 dans les itinéraires.rb?
Maintenant, j'utilise 2 exemples de code:
# example 1
match "/go/(*url)", to: redirect { |params, request| Addressable::URI.heuristic_parse(params[:url]).to_s }, as: :redirect, format: false
# example 2
match "/go/(*url)", to: redirect { |params, request| Addressable::URI.heuristic_parse(URI.encode(params[:url])).to_s }, as: :redirect, format: false
Mais quand j'ai essayer d'utiliser les mots russes dans les 'url' paramètre, dans le 1er exemple-je obtenir de 500 pages (mauvais URI), 2e - je obtenir rediriger vers la scène.exemple.xn--org-yedaaa1fbbb/
Grâce
- Pourriez-vous donner quelques exemples d'Url que vous tentez de les utiliser?
- Quelques échantillons: stage.example.org/go/газета stage.example.org/go/газета.рф
- si vous souhaitez rediriger vers 404 de l'intérieur le contrôleur, vous pouvez également utiliser
redirect_to("/404") && return
Vous devez vous connecter pour publier un commentaire.
Si vous voulez des pages d'erreur personnalisées, vous serez mieux en regardant cette réponse j'ai écrit il y a quelques semaines
Vous avez besoin de plusieurs éléments importants pour créer des erreur de parcours:
-> Ajouter un gestionnaire d'erreur personnalisé dans
application.rb
:-> Créer
/404
des itinéraires dans votreroutes.rb
:-> Ajouter
actions
à la demande du contrôleur pour gérer ces routesC'est évidemment relativement basique, mais j'espère qu'il va vous donner encore plus d'idées sur ce que vous pouvez faire
La chose la plus simple à faire est de vous assurer que vos routes ne correspondent pas mauvaise Url. Par défaut, les Rails de retourner une erreur 404 pour les routes qui n'existent pas.
Si vous ne pouvez pas faire ce que la page 404 par défaut vit à
/404
de sorte que vous pouvez les rediriger vers cet emplacement. Quelque chose à garder à l'esprit ici, cependant, est que ce type de redirection sera d'effectuer une Redirection Permanente 301 au lieu d'un 302. Cela peut ne pas être le comportement que vous souhaitez. Pour ce faire, vous pouvez effectuer les opérations suivantes:Au lieu de cela, je vous recommande l'établissement d'un avant le filtre dans votre action au lieu de cela soulève un pas trouvé exception. Je ne suis pas sûr de savoir si cette exception est à la même place dans les Rails 4, mais avec des Rails 3.2 je suis actuellement à l'aide:
Vous pouvez ensuite faire tout le traitement et l'URL de la vérification dans le contrôleur (si compliqué de vérifier le format de l'URL est nécessaire).