2011-10-20 3 views
1

Je suis en train de refaire un ancien site web php dans RubyOnRails (3.0.3). Le site existant (écrit en php) est en ligne depuis quelques années et a gagné beaucoup de liens et est bien positionné dans Google.301 Rediriger les anciens chemins php vers de nouveaux rails

Maintenant, puisque je le libère dans Rails sur le même domaine, je veux que les anciens fichiers soient redirigés vers le fichier correspondant dans la nouvelle version. Quel serait le meilleur moyen?

Ce sont les circonstances:

  • Je construis le nouveau site sur le même domaine où je remplaçais le php version
  • Il n'y a pas de logique dans la façon dont les fichiers ont été renommés. Par exemple www.domain.com/cat/home/page/helloworld.php pourrait avoir sa place correspondante sur www.domain.com/stuff/hello-world-in-rails et certains fichiers ont été supprimés, etc.
  • Ainsi , Je voudrais spécifier dans une table, ou similaire, où une colonne est l'ancien chemin et l'autre colonne est le nouveau chemin. Quand quelqu'un tente d'accéder www.domain.com/cat/home/page/helloworld.php ils seront 301: d à www.domain.com/stuff/hello-world-in-rails~~V~~singular~~3rd

Quand je ai fait php-sites dans Wordpress J'ai résolu cela en ajoutant un code de redirection dans chaque fichier php pointant vers le nouveau chemin (dans Wordpress). Comme mon installation Rails ne supporte pas les fichiers php, cela n'est pas possible.

Je suppose que mod_rewrite est mon arme de choix, mais comment dois-je y aller?

+0

double possible de [Rediriger ancien contenu (.html/.php, etc.) Ruby on Rails] (http://stackoverflow.com/questions/2063892/reroute-old-content-html- php-etc-to-ruby-on-rails) –

Répondre

3

Vous pouvez gérer toutes les redirections dans le fichier de routes. Voici la documentation des itinéraires, en particulier la méthode redirct sera interressante pour vous!

http://guides.rubyonrails.org/routing.html#redirection

+0

Oui, cela fonctionne très bien. Je n'avais pas réalisé que c'était aussi simple! Mais sont-ils 301 redirigés? – Christoffer

+0

Je pense que vous pouvez donner le code HTTP en tant que param à la méthode. Vérifiez la documentation Je pense qu'il y a une option appelée: status qui vous donne la possibilité de changer le statut HTTP. – davidb

2

Je suggère de gérer cette tâche avec Rack, devrait être rapide et prendre l'application de votre rail de charge.

Il y a un rubygem pour porte appelé « redirect »

Il vous permet de détecter et de rediriger certains urls à l'aide d'un simple tableau. par exemple.

redirect ['/catch_url', '/redirect_url'], 
      ['/catch_url2', '/redirect_url2'] 

NOTE: repo n'a pas été mis à jour dans un certain temps, donc je ne sais si elle fonctionne toujours, même si elle ne l'est pas, il n'y a pas trop beaucoup de code en elle et vous pourriez probablement rouler votre propre version ajustée de cela assez facilement si nécessaire.

Questions connexes