Lighttpd - 添加规范 headers 到 www 页面
Lighttpd - add canonical headers to www pages
这不是将 www 重定向到 non-www 的经典方法,而是我想将规范 headers 添加到所有指向 non-www 页面的 www 请求,例如:
请求https://www.example.com/index.html => Add canonical header to https://example.com/index.html
我已尝试使用通用重定向,但它看起来不正确,并且无法评估 %1/$1
$HTTP["host"] =~ "^www\.(.*)$" {
setenv.add-response-header += ( "Link" => "<https://%1/>; rel='canonical'" )
}
想法?
lighttpd mod_setenv 不是这样工作的。 https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModSetenv 没有描述该语法。
此外,lighttpd.conf 中不同条件块中的 += 可能与您认为的不同。 += 用于同一条件块中的 setenv。一个条件块中只有一个 setenv(集合)适用于一个请求。
综上所述,一种正确的解决方案不使用 lighttpd mod_setenv:
在 lighttpd 中,您可以使用 mod_magnet 来执行几行自定义 lua 代码。有了它,您可以进行广泛的任意更改,包括在匹配 lighty.env["request.uri"].
后设置响应 headers
https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModMagnet
好的,所以我选择了 mod_magnet / Lua 路线,其中涉及两个简单的步骤。
- 编辑 lighttpd.conf 以添加 mod_magnet 模块和请求主机具有 www.
时的条件
server.modules = ( mod_magnet, )
$HTTP["host"] ~= "^www\.(.*)$" {
magnet.attract-physical-path-to = ( "/path/to/canonical.lua" )
}
- 编写简单的 canonical.lua 文件(请注意,我添加了对 www. 的检查,但这不是必需的,因为文件仅在主机拥有时执行!)
function string.starts(String,Start)
return string.sub(String,1,string.len(Start))==Start
end
if string.starts(lighty.request['Host'], "www.") then
lighty.header["Link"] = "<https://"..string.sub(lighty.request['Host'],5)..lighty.env["request.uri"]..">;rel=\"canonical\""
end
这不是将 www 重定向到 non-www 的经典方法,而是我想将规范 headers 添加到所有指向 non-www 页面的 www 请求,例如:
请求https://www.example.com/index.html => Add canonical header to https://example.com/index.html
我已尝试使用通用重定向,但它看起来不正确,并且无法评估 %1/$1
$HTTP["host"] =~ "^www\.(.*)$" {
setenv.add-response-header += ( "Link" => "<https://%1/>; rel='canonical'" )
}
想法?
lighttpd mod_setenv 不是这样工作的。 https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModSetenv 没有描述该语法。
此外,lighttpd.conf 中不同条件块中的 += 可能与您认为的不同。 += 用于同一条件块中的 setenv。一个条件块中只有一个 setenv(集合)适用于一个请求。
综上所述,一种正确的解决方案不使用 lighttpd mod_setenv:
在 lighttpd 中,您可以使用 mod_magnet 来执行几行自定义 lua 代码。有了它,您可以进行广泛的任意更改,包括在匹配 lighty.env["request.uri"].
后设置响应 headers
https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModMagnet
好的,所以我选择了 mod_magnet / Lua 路线,其中涉及两个简单的步骤。
- 编辑 lighttpd.conf 以添加 mod_magnet 模块和请求主机具有 www. 时的条件
server.modules = ( mod_magnet, ) $HTTP["host"] ~= "^www\.(.*)$" { magnet.attract-physical-path-to = ( "/path/to/canonical.lua" ) }
- 编写简单的 canonical.lua 文件(请注意,我添加了对 www. 的检查,但这不是必需的,因为文件仅在主机拥有时执行!)
function string.starts(String,Start) return string.sub(String,1,string.len(Start))==Start end if string.starts(lighty.request['Host'], "www.") then lighty.header["Link"] = "<https://"..string.sub(lighty.request['Host'],5)..lighty.env["request.uri"]..">;rel=\"canonical\"" end