2011-04-08 2 views
0

J'ai une ancienne application écrite en PHP et maintenant je la remplace par une nouvelle application RoR. L'ancienne application a des liens comme "this-is-seo-title, n123.html". Dans htaccess, il existe une règle qui traduit ces liens en news.php? Id = 123. Maintenant, quand j'applique l'application RoR, les liens sont de type "RoR" (: controller /: action /: id). C'est cool et sympa, mais dans Google j'ai environ 50k sous-pages indexées. Puis-je créer de nouvelles règles dans le fichier htaccess qui traduira les liens "this-is-seo-title, n123.html" vers/news/123?Ruby on Rails et standard mod_rewrite

Je n'ai pas encore déployé d'application et je n'ai pas accès à l'environnement avec le module passager, donc je ne peux pas le tester moi-même.

Répondre

0

Je ne pense pas qu'il soit nécessaire d'utiliser htaccess. Si vous allez des rails, alors faites-le avec les aides de rails. Je pense que cela devrait fonctionner dans votre routes.rb:

match 'this-is-seo-title,n:id.html' => 'news#show' 

Cette route va invoquer la NewsController et l'action show avec 123 comme: paramètre id. Était-ce ce que vous cherchiez?

Edit:

Pour Rails 2

map.connect 'this-is-seo-title,n:id.html', :controller => 'news', :action => 'show' 

Au moins, je pense que cela va travailler dans Rails 2. Je n'ai pas l'environnement opérationnel atm à tester avec. Faites-moi savoir si cela ne fonctionne pas.

+0

J'ai fait une erreur et je travaille à 2.3.6 RoR. Il est possible de le faire fonctionner avec des versions sous RoR3? – Arti

+0

Malheureusement, cela ne fonctionne pas. J'ai essayé: – Arti

+0

J'ai essayé: map.connect '/news,n:id.html',: controller => 'posts',: action => 'show' et map.connect 'news, n: id.html', : controller => 'posts',: action => 'show' et j'obtiens une erreur: Aucune route ne correspond "/news,n897.html" avec {: method =>: get} – Arti