Correction de référencement avec des redirections chez Ruby On Rails
-
28-10-2019 - |
Question
J'ai commis une erreur et autorisé deux itinéraires différents pointant au même endroit.Maintenant, j'ai des problèmes avec le contenu dupliqué.
Les actualités peuvent être consultées de deux manières: http://website.com/posts/321 et http://website.com/news/this-is-title/321
Je veux résoudre ce problème et mon idée est de vérifier par quel lien l'utilisateur vient.Par exemple, si quelqu'un passe par http://website.com/posts/321 , je souhaite redirigervisiteur pour corriger l'itinéraire: http://website.com/news/this-is-title/321
Ma toute première idée est de valider l'url de la requête sur le contrôleur de poste, puis dans l'instruction if, décider de rediriger ou simplement d'afficher une vue correcte.Est-ce une bonne conception?
La solution
Je pense que ce n'est pas la meilleure solution.
Vous devez le faire au niveau des routes en utilisant les méthodes de redirection .
Autres conseils
Je ne pense pas que vous devriez vous déranger, jetez un œil à URL canonique si vous êtes préoccupé par le référencement
Dans votre émission posts_controller.rb
:
def show
return redirect_to post_path(params[:id]) if request.fullpath.match /(your regex)/i, :status => 301, :notice => 'This page has been permanently moved'
@post = Post.find(...)
end
- renvoyer redirect_to est important, car vous ne pouvez pas appeler la redirection ou effectuer plusieurs rendus
- correspond à l'expression régulière sur request.fullpath
- si vous êtes très préoccupé par le référencement, définissez le statut sur 301. cela indique aux moteurs de recherche que la page a été définitivement déplacée
- l'avis est facultatif et uniquement pour l'esthétique après la redirection au cas où l'utilisateur aurait mis en signet l'ancienne URL de la page