【发布时间】:2013-11-29 11:14:09
【问题描述】:
我的图片都保存在应用程序本身中,因此被 /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。
更新2------ 改为
r302 %r{(?:images\/)(\d*.jpe?g|png|gif)$}, "http://my.images.images.s3.amazonaws.com/540x310/$1"
如果我去,现在将重定向 http://www.example.com/images/13135.jpeg
但不会在网站本身中呈现图像。
【问题讨论】:
-
“但这似乎不太正确”这是什么意思?您遇到错误还是什么?
-
没有错误消息,没有重定向,nada。正则表达式是正确的,我很确定。
-
对正则表达式进行了轻微修正,但仍然不匹配... (?:images\/)(\d*.jpe?g|png|gif)$
-
用 curl 测试你的重定向,比如
curl -I "http://localhost:5000/images/12345.jpg" -
用 rewrite i HTTP/1.1 404 Not Found with r302 i HTTP/1.1 302 Found with the redirected location
标签: ruby-on-rails url heroku rack-rewrite