rack-rewrite - rails3.2 - heroku - 重定向硬编码的图片网址

时间:2013-11-29 11:14:09

标签: ruby-on-rails url heroku rack-rewrite

我的图片全部都保存在应用程序中,所以用/images/12345.jpg引用,在某些地方已经硬编码到cms的内容中,有或没有完整的URL。

图片现已移至s3,因此我想为以下格式的网址添加重定向: /images/12345.jpg|png|gif 要么 http://www.example.com/images/12345.jpg|png|gif (但仅限于数字文件名)

并将其指向

http://my.images.images.s3.amazonaws.com/540x310/12345.jpg|png|gif

我目前有

use Rack::Rewrite do
rewrite %r{images\/(\d*.)(jpe?g|png|gif)$}, 'http://my.images.images.s3.amazonaws.com/540x310/$1$2'
end

但这似乎不太合适。

UPDATE ------ 当然源中的URL没有改变,我应该意识到这一点。单击该链接会直接返回错误:

没有路线匹配[GET]“/ http://my.images.images.s3.amazonaws.com/540x310/13135.jpeg

(注意前导斜线)

因此重写正在运行,但它认为它应该路由到内部链接而不是外部URL。

UPDATE2 ------ 改为

r302 %r{(?:images\/)(\d*.jpe?g|png|gif)$}, "http://my.images.images.s3.amazonaws.com/540x310/$1"
如果我去,

现在会重定向 http://www.example.com/images/13135.jpeg

但是没有在网站中呈现图像。

1 个答案:

答案 0 :(得分:2)

这是由于localhost上的url仍指向live url,因此301重写永远不会被调用。

因此,本地部署将实时URL硬编码到页面中,然后我更改了这个并将浏览器指向localhost。

在页面中虽然旧的URL仍然存在,这意味着页面正在寻找实时服务器以寻找可能的重定向从未被重新部署