2013-12-06 2 views
2

Мы обновили наш веб-сайт компании от статической системы до Ruby on Rails v3.2.Rails 3.2 перенаправление/images/* to/assets/*

К сожалению, у нас еще есть довольно много запросов налива для горячекатаных связанных статических изображений для «/image/company-logo.png» (и других), но эти запросы завершаться:

Started GET "/images/company-logo.png" for xxx.xxx.xxx.xxx at 2013-12-06 17:07:08 +0000 
ActionController::RoutingError (No route matches [GET] "/images/company-logo.png"): 

Проблема в том, что эти запросы заполняют мои журналы (я получаю сотни в час).

просто; Мне нужен способ, чтобы перенаправлять все для «/ изображений» на «/ активы» на Heroku

Что я пробовал:

get '/images', to: redirect('/assets') 

(кажется, игнорировать или, по крайней мере, не имеет никакого эффекта)

get '/images/:name', to: redirect('/assets/%{name}') 

(перенаправляет/активов, но срывает с «.png», и, таким образом, снова не удастся. Там могут быть и другие файлы изображений/форматы, поэтому я не могу эффективно жёстко в».png ')

Кажется, похоже, это будет довольно распространенной проблемой, но я не могу найти никаких решений на межсетевых экранах.

UPDATE

Хорошо, я решил эту проблему, поставив статические изображения в папке Public/изображений. Я видел в другом месте, что это может быть «плохая идея» из-за того, как Heroku обрабатывает статические файлы на нескольких динамиках, но, похоже, это работает (возможно, потому, что изображения находятся в git-репо и не добавляются после факта).

Я по-прежнему хотел бы услышать любые другие решения для массового перенаправления таких активов, поскольку я не являюсь поклонником размещения чего-либо публичного, плюс это может быть полезно для тех, кто не может использовать/public (по разным причинам).

~ РЕШЕНИЕ ~(суммированы на одной линии от ответа NARKOZ в поле ниже)

get '/images/:name.:ext', to: redirect('/assets/%{name}.%{ext}'), constraints: { name: /.+/, ext: /(jpg|png|gif)/ } 

ответ

3

Try: ''

get '/images/:name.:ext', to: redirect('/assets/%{name}.%{ext}') 
+0

Но будет ли это по-прежнему работать, если имя файла изображения имеет в нем (например, company.logo.png)? Вероятно, решит мою проблему, но все равно кажется клочковым. Интересно, можете ли вы включить какое-либо регулярное выражение в params? – Donovan

+1

Ограничения использования: 'ограничения: {name: /.+/, ext:/(jpg | png | gif) /}' – NARKOZ

+1

Блестящий! Это выигрышная комбинация. Еще раз спасибо, НАРКОС! – Donovan