Ich habe eine alte Site in Coldfusion gebaut, eine neue Site in Rails gebaut. Ich möchte die alten URLs auf die neuen URLs umleiten. Ich bin mir nicht sicher, ob Routen der richtige Weg sind oder nicht (ich bin ein Noob). Die URLs werden sich sehr ähneln. Das sollte einfach sein, aber ich bin mir nicht sicher über die beste Methode.Rails mit routes.rb um alte URLs umzuleiten
Alte URL:
mysite.com/this-is-the-slug-right-here/
Neue URL:
mysite.com/blog/this-is-the-slug-right-here
Hier ist das Problem, ich habe 3 "Inhaltstypen". Die alte Site-URL unterscheidet nicht zwischen den Inhaltstypen. Die neue Rails-Website verfügt über einen Controller für jeden der Inhaltstypen: Blog, Foto, Mobiles Foto.
Also im obigen Beispiel ist /blog/
der Controller (Inhaltstyp) und this-is-the-slug-right-here
ist der Permalink oder Slug für den Inhalt. Die ich so bin immer:
@content = Content.where(:permalink => params[:id]).first
Soll ich routes.rb verwenden, oder muss ich eine Art von Catch-all-Skript? Jede Hilfe, um mich in die richtige Richtung zu weisen, wäre sehr willkommen. Hier ist ein Blog-Post
bearbeiten weiter
zu klären: http://jyoseph.com/treadmill-desk-walk-this-way/
Die neue URL für diese wäre /blog/treadmill-desk-walk-this-way
, weil es eine Art des Inhalts von Blog.
Und ein Foto Beitrag: http://jyoseph.com/berries/
Die neue URL für diese /photos/berries
sein würde, weil es sich um eine Art des Inhalts des Bildes ist. Der Inhaltstyp ist ein Attribut im Inhaltsmodell, das im Attribut content_type
gespeichert ist.
Hier ist meine routes.rb Datei:
resources :contents
match 'mophoblog/:id', :to => 'mophoblog#show'
match 'photos/:id', :to => 'photos#show'
match 'blog/:id', :to => 'blog#show'
root :to => "index#index"
match ':controller(/:action(/:id(.:format)))'
Verstanden @ Zeichen Antwort verwenden, hier ist was ich mit endete.
in meinem routes.rb
match ':id' => 'contents#redirect', :via => :get, :as => :id
in meinem Inhalt Controller:
def redirect
@content = Content.where(:permalink => params[:id]).first
if @content.content_type.eql?('Photo')
redirect_to "/photos/#{@content.permalink}", :status => :moved_permanently
elsif @content.content_type.eql?('Blog')
redirect_to "/blog/#{@content.permalink}", :status => :moved_permanently
elsif @content.content_type.eql?('MoPhoBlog')
redirect_to "/mophoblog/#{@content.permalink}", :status => :moved_permanently
end
end
Ich bin sicher, dass dies verbessert werden könnte, und zwar so, wie ich bin Umleitung, aber das mein Problem gelöst perfekt.
In einer URL wie 'mysite .com/this-is-the-slug-right-here/', welcher Teil erlaubt es deinem Redirector, Blogs von Pix usw. zu unterscheiden? – Eric
Welcher Teil der aktuellen Coldfusion-Site? Ich verwende isapi_rewrite mit einer httpd.ini-Datei. In der neuen und alten Site wird der Inhalt alle in derselben Tabelle gespeichert und sie sind nach Typ getrennt. – jyoseph