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?

Était-ce utile?

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
  1. renvoyer redirect_to est important, car vous ne pouvez pas appeler la redirection ou effectuer plusieurs rendus
  2. correspond à l'expression régulière sur request.fullpath
  3. 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
  4. 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top