【问题标题】:Use proxy only if file does not exist仅当文件不存在时才使用代理
【发布时间】:2016-12-19 09:47:12
【问题描述】:

我尝试通过 Apache 代理将访问者传递到界面。这行得通。为了自定义界面(CSS、图像等),我们希望我们可以覆盖远程服务器上的文件。这是我们的代码:

RewriteEngine on
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) https://.../$1 [P,L]

在 Apache 的文档根目录中,例如有一个 css/style.css。但是在网络浏览器中请求这个,它会显示通过代理获取的网站版本。我们尝试了几件事都没有成功。

【问题讨论】:

  • 只是一个疯狂的猜测,但可能会对您有所帮助。也许您可以将两个文件夹代理到两个不同的位置。不确定这是否有效,但可以尝试一下。 ProxyPass "/site" "backend.example.com" connectiontimeout=5 timeout=30 ProxyPass "/site/css_folder_you_want_to_change" "css_backend.example.com" connectiontimeout=5 timeout=30
  • RewriteLog / loglevel rewrite:trace8 对 -f 测试有何看法?

标签: apache .htaccess proxy


【解决方案1】:

通过排除已知的css/js/image 扩展来尝试此规则:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(?:jpe?g|gif|bmp|png|ico|tiff|css|js)$ [NC]
RewriteRule (.*) https://example.com/$1 [P,L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 2016-09-11
    • 2012-06-14
    • 2016-09-05
    相关资源
    最近更新 更多