仅在找不到文件时代理请求?
Proxy requests only if the file is not found?
我正在寻找 Redirect requests only if the file is not found? 的等价物,而不是重定向,我希望它在文件丢失时对另一台服务器执行 ProxyPass。
这不太好用,因为它不会处理不以“/”结尾的请求,例如https://site.trajano.net/trajano 转至代理并重定向。
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (.*) - [L]
RewriteRule (.*) https://trajano.github.io/%{REQUEST_URI} [P]
我也从不同的答案中尝试了以下方法,效果稍好一些,但发生的是它重定向到 github 而不是代理。
RewriteCond %{DOCUMENT_ROOT}/ -f [OR]
RewriteCond %{DOCUMENT_ROOT}/ -d
RewriteRule (.*) - [S=2]
#
# Requested resource does not exist, do rewrite if it exists in /archive
RewriteCond %{DOCUMENT_ROOT}/archive/ -f [OR]
RewriteCond %{DOCUMENT_ROOT}/archive/ -d
RewriteRule (.*) /archive/ [L]
#
# Else
RewriteRule (.*) https://trajano.github.io/%{REQUEST_URI} [P]
mod_rewrite
和 mod_proxy
都需要启用。将以下内容放在 VirtualHost
块中(不在 Directory
指令或 VirtualHost
以外的任何内容中):
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/ -f [OR]
RewriteCond %{DOCUMENT_ROOT}/ -d
RewriteRule (.*) - [L]
#
# Else proxy
RewriteRule ^/(.*)$ https://trajano.github.io/ [P,QSA]
ProxyPassReverse / https://trajano.github.io/
第一个重写块处理存在的文件和目录,在这种情况下它 returns 原始文件块。
下一个重写规则将处理代理。 ProxyPassReverse
确保返回的 Location
被重写回本地服务器而不是代理服务器。
我正在寻找 Redirect requests only if the file is not found? 的等价物,而不是重定向,我希望它在文件丢失时对另一台服务器执行 ProxyPass。
这不太好用,因为它不会处理不以“/”结尾的请求,例如https://site.trajano.net/trajano 转至代理并重定向。
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (.*) - [L]
RewriteRule (.*) https://trajano.github.io/%{REQUEST_URI} [P]
我也从不同的答案中尝试了以下方法,效果稍好一些,但发生的是它重定向到 github 而不是代理。
RewriteCond %{DOCUMENT_ROOT}/ -f [OR]
RewriteCond %{DOCUMENT_ROOT}/ -d
RewriteRule (.*) - [S=2]
#
# Requested resource does not exist, do rewrite if it exists in /archive
RewriteCond %{DOCUMENT_ROOT}/archive/ -f [OR]
RewriteCond %{DOCUMENT_ROOT}/archive/ -d
RewriteRule (.*) /archive/ [L]
#
# Else
RewriteRule (.*) https://trajano.github.io/%{REQUEST_URI} [P]
mod_rewrite
和 mod_proxy
都需要启用。将以下内容放在 VirtualHost
块中(不在 Directory
指令或 VirtualHost
以外的任何内容中):
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/ -f [OR]
RewriteCond %{DOCUMENT_ROOT}/ -d
RewriteRule (.*) - [L]
#
# Else proxy
RewriteRule ^/(.*)$ https://trajano.github.io/ [P,QSA]
ProxyPassReverse / https://trajano.github.io/
第一个重写块处理存在的文件和目录,在这种情况下它 returns 原始文件块。
下一个重写规则将处理代理。 ProxyPassReverse
确保返回的 Location
被重写回本地服务器而不是代理服务器。