Php 从文件系统或远程替代服务

Php 从文件系统或远程替代服务,php,apache,Php,Apache,请注意,以下内容用于开发目的,因此我不太担心安全性 情况如下: 文件由assets.example.com提供 本地开发环境尝试从localhost.assets.example.com加载文件 我们希望保持localhost.assets.example.com和assets.example.com同步。 有很多数据,所以在本地保存这些数据是有问题的 需要在localhost.assets.example.com上提供替换文件或新文件,而不会影响live assets.example.co

请注意,以下内容用于开发目的,因此我不太担心安全性

情况如下:

  • 文件由assets.example.com提供
  • 本地开发环境尝试从localhost.assets.example.com加载文件
  • 我们希望保持localhost.assets.example.com和assets.example.com同步。
    • 有很多数据,所以在本地保存这些数据是有问题的
    • 需要在localhost.assets.example.com上提供替换文件或新文件,而不会影响live assets.example.com
提议的解决办法:

  • 当向localhost.assets.example.com发出请求时,从本地文件系统提供文件(如果存在),如果不存在,则尝试从assets.example.com提供文件(如果存在)。其他404
这样做的效果是,只有更改的或新的文件需要在开发机器上存在,而在本地删除所有资产文件实际上会镜像活动的资产

我们已经在使用PHP5.3,因此它可以作为解决方案的一部分使用。

在apache中:

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule (.*) http://assets.example.com/$1 [P]
:

使用[p]标志会导致请求由mod_proxy处理,并通过代理请求处理


似乎不起作用。当我测试localhost.assets.example.com上不存在但assets.example.com上确实存在的文件时,我会下载一个空文件,其类型为:application/x-trashx-trash仅当我重命名本地文件.old时。我刚拿到404。你安装了mod_代理吗?你的apache日志怎么说?mod_协商已经启用。我一禁用它,上述建议就开始起作用。