我正在寻找一个等效的Redirect requests only if the file is not found?,而不是重定向,我希望它做一个代理传递到另一个服务器,如果一个文件丢失。
这样做效果不太好,因为它不会处理不以“/”结尾的请求,例如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}/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteRule (.*) - [S=2]
#
# Requested resource does not exist, do rewrite if it exists in /archive
RewriteCond %{DOCUMENT_ROOT}/archive/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/archive/$1 -d
RewriteRule (.*) /archive/$1 [L]
#
# Else
RewriteRule (.*) https://trajano.github.io/%{REQUEST_URI} [P]
1条答案
按热度按时间wmvff8tz1#
mod_rewrite
和mod_proxy
都需要启用。请将以下内容放入VirtualHost
块中(不要放在Directory
指令或VirtualHost
以外的任何内容中):第一个重写块处理存在的文件和目录,在这种情况下,它返回原始文件块。
下一个重写规则将处理代理。
ProxyPassReverse
确保返回的Location
被重写回本地服务器,而不是被代理的服务器。