0

在 Ruby on Rails 3.2.9 中,有一种方法可以拦截资产请求并重新映射正在请求的 URL。

例如,对于 /assets/javascripts/app.js 的请求,我想拦截请求并删除 javascripts/。我已经在 application.rb 中尝试过

config.asset_path = proc { |path| 
    path.slice! 'javascripts/'
}
4

1 回答 1

1

我不知道有任何方法可以拦截对资产的请求,而且我非常怀疑是否存在或者根本不会存在。

仅仅是因为它不适用于已编译的资产。如果资产位于具有完全不同软件堆栈的另一台服务器上怎么办?例如,如果有人选择在 Amazon S3 上托管资产,那么请求怎么会被拦截?

如果您确实需要此功能并且您正在自托管您的资产,那么最好的方法是配置您的 Web 服务器以重定向请求。

看看RewriteEngineApache 或HttpRewriteModulenginx。它们提供了 URL 重写的机制。(我猜大多数生产级 Web 服务器也有类似的东西)

于 2012-12-19T17:50:17.120 回答