【问题标题】:rack-rewrite - rails3.2 - heroku - redirect hardcoded image urlsrack-rewrite - rails3.2 - heroku - 重定向硬编码的图像 url
【发布时间】: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


【解决方案1】:

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

所以本地部署将实时 URL 硬编码到页面中,然后我正在更改它并将我的浏览器指向本地主机。

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

【讨论】:

    猜你喜欢
    • 2012-11-26
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多