apache 虚拟主机设置:如果存在,则从目录提供文件,回退到反向代理

apache 虚拟主机设置:如果存在,则从目录提供文件,回退到反向代理

我想要设置一个 apache 2.4 虚拟主机来提供目录“var/www/html”中存在的“物理”文件(例如 robots.txt)。

如果请求的 URI 不是现有文件,则应使用反向代理规则。

我读过关于条件 ProxyPassing 的内容,例如

<If "! -f %{REQUEST_FILENAME}">
    #ProxyPassReverseCookiePath / /author
    ProxyPassReverseCookieDomain localhost mywebsite.com

    #ProxyPass           / ajp://localhost:7009/
    #ProxyPassReverse    / ajp://localhost:7009/
    ProxyPass           / http://localhost:7080/
    ProxyPassReverse    / http://localhost:7080/
</If>

在这些行之后我放置了我的定位指令。

但它不起作用,而是说AH00526: Syntax error on line 45 of /etc/apache2/sites-enabled/000-default.conf: ProxyPass cannot occur within <If> section

我在这里读到了这个:https://serverfault.com/a/655873/149187(不是被接受的答案,但有 3 票赞成)。

我该如何使用 if 标签?或者有没有更好的方法来实现我想要的效果?谢谢你为我指明了正确的方向!

答案1

类似这样的(未经测试):

RewriteEngine on
RewriteCond "/var/www/html/%{REQUEST_URI}" !-f
RewriteRule "^/(.*)$" "http://localhost:7080/$1" [P]

相关内容