如何使用 OpenBSD 将 http 请求重定向到特定页面httpd
;例如,我正在提供 OpenBGPd,bgplg
如下所示httpd.conf
:
ext_addr="127.0.0.1"
server "www.example.conf" {
listen on $ext_addr port 80
location "/cgi-bin/*" {
fastcgi
root ""
}
}
如何将 www.example.com 重定向到 www.example.com/cgi-bin/bgplg,而不必精确键入 www.example.com/cgi-bin/bgplg。
我尝试了几种选择,但似乎都不起作用。谢谢
答案1
要使用简单的block return
重定向,它需要一个特定的/
位置块,否则它将无限循环(请注意,位置块/
没有通配符,因此资产可以绕过)
server "www.example.conf" {
listen on $ext_addr port 80
location "/cgi-bin/*" {
fastcgi
root ""
}
location "/" {
# 302 (Temporary) while testing
# 301 (Permanent) when you're done & sure
block return 302 "/cgi-bin/bgplg"
}
}
现在,还有另一个通常有效的技巧:root
作为变量传递给 fastcgi DOCUMENT_ROOT
,如果存在则执行该变量。
副作用是 httpd 没有设置SCRIPT_NAME
bgplg 所需的内容,因此不起作用;但其他不依赖它的脚本,或者优雅地处理这个问题的脚本也可以正常工作,(并且可以/
单独处理,也可以通过模式匹配进行扩展或/*
作为包罗万象的)
location "/" {
fastcgi
root "/cgi-bin/somescript"
}