2

我的图像都保存在应用程序本身中,因此被 /images/12345.jpg 引用,在某些地方它已被硬编码到 cms 的内容中,有或没有完整的 url。

图像现在已移至 s3,因此我想为以下格式的 url 添加重定向:/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

但这似乎不太正确。

更新-----当然源中的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现在将重定向

但不会在站点本身中呈现图像。

4

1 回答 1

2

这是由于 localhost 上的 url 仍然指向实时 url,因此 301 重写从未被调用。

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

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

于 2013-12-02T15:33:48.977 回答