2014-03-21 3 views
1

У меня есть сайт, который используется, чтобы иметь нагрузку сообщений в блоге на в URL, как любой из них:Имеются ли ограничения при манипулировании маршрутами Rails?

/blog/2014/03/21/post-name 
/2014/03/20/another-post 

В настоящее время они переехали в новый домен, и я пытаюсь настроить переадресацию на маршрутах файл:

match '*path' => 
    redirect{ |params, request| 
    "http://ournewdomain.com/#{params[:path]}" 
    }, constraints: { :path => %r{(blog/)?\d\d\d\d/\d\d/\d\d/[\w\-_]+} } 

Но это перенаправляет все запросы на новый домен - это как будто constraints не имеет никакого эффекта. Я читал this, но похоже, что проблема была решена? Делает ли constraints работу с глобальными маршрутами?

ответ

0

Я сделал небольшой твик к этому, и это похоже на работу:

get '*path', to: redirect {|params, req| 
    "http://ournewdomain.com/#{params[:path]}" }, 
    constraints: { :path => %r{(blog/)?\d\d\d\d/\d\d/\d\d/[\w\-_]+} } 
+0

Я собираюсь ослепнуть - что изменилось? (У вас не будет возможности проверить до понедельника, к сожалению.) –

+0

Он по-прежнему перенаправляет мне другие URL-адреса - ограничения, похоже, не оказывают никакого эффекта. –

0

Не будучи в состоянии сделать constraints на работу globbed путь правильно, я в настоящее время в конечном итоге делает это, что кажется неудовлетворительный, но работает:

match '/:year/:month/:day/:slug', 
    to: redirect{ |p, request| 
    "http://ournewdomain.com/#{p[:year]}/#{p[:month]}/#{p[:day]}/#{p[:slug]}/" 
    }, constraints: { 
     :year => /\d\d\d\d/, 
     :month => /\d\d/, 
     :day => /\d\d/, 
     :slug => /[\w\-_]+/ } 

# Same as above but with /blog/ prefix. 
match '/blog/:year/:month/:day/:slug', 
    to: redirect{ |p, request| 
    "http://ournewdomain.com/#{p[:year]}/#{p[:month]}/#{p[:day]}/#{p[:slug]}/" 
    }, constraints: { 
     :year => /\d\d\d\d/, 
     :month => /\d\d/, 
     :day => /\d\d/, 
     :slug => /[\w\-_]+/ } 
Смежные вопросы