在Rails中控制公共文件响应代码

时间:2018-08-16 08:05:46

标签: ruby-on-rails ruby-on-rails-4 asset-pipeline

让我们说我在Rails应用程序中有一个POST端点,在其中它得到一个称为state的参数,该参数将是200或503的整数。

如何如何使Robots.txt文件以该POST端点的给定状态响应,我的意思是我需要一种方法来控制仅该文件(Robots.txt)的响应代码,具体取决于在该POST端点上。

顺便说一句,问题不在于如何存储该状态或其他内容,而仅在于如何更改公共文件的响应代码?

有可能吗?

为此,我现在想尝试的是让控制器动作与robots.txt路由匹配,但是我觉得这样做很愚蠢。

1 个答案:

答案 0 :(得分:1)

是的,如果您希望Rails参与确定给定URL的响应,那么您将需要定义一个控制器操作来处理这些请求。

您可以使用send_file来实际执行文件发送部分。

根据您的Web服务器的配置,可能您需要将实际的robots.txt文件存储在public/之外的其他位置,否则,即使没有机会获得Rails,也可能会得到它的服务参与其中。


可以根据您想要的响应代码安排在运行时重写您的nginx(例如)配置文件...但是我认为 会很愚蠢要做。

更实用的中间立场是让Rails创建或删除标记文件,然后根据该文件是否存在在nginx配置中使用条件文件。不过,这将是一个问题……如果您拥有多台服务器,则会变得很复杂。