Lighttpd - 将规范标题添加到 www 页面



这不是经典的重定向www到非www,而是我想为所有指向非www页面的www请求添加规范标题,例如:

请求 https://www.example.com/index.html => 将规范标头添加到 https://example.com/index.html

我尝试使用通用重定向,但它看起来不正确,并且无法评估 %1/$1

$HTTP["host"] =~ "^www.(.*)$" {
setenv.add-response-header += ( "Link" => "<https://%1/$1>; rel='canonical'" )
}

思潮?

这不是 lighttpd mod_setenv的工作方式。 https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModSetenv 没有描述该语法。

此外,lighttpd.conf 中不同条件块中的 += 可能不会像您认为的那样。 += 表示同一条件块中的 setenv。 一个条件块中只有一个 setenv(set(适用于请求。

综上所述,一个正确的解决方案不使用 lighttpd mod_setenv:

在 lighttpd 中,您可以使用mod_magnet来执行几行自定义 lua 代码。 有了它,您可以进行广泛的任意更改,包括在与lighty.env["request.uri"匹配后设置响应标头。
https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModMagnet

好的,所以我选择了mod_magnet/Lua路线,其中涉及两个简单的步骤。

  1. 编辑 lighttpd.conf 以添加mod_magnet模块和请求的主机具有 www 的条件。
server.modules = ( mod_magnet, )
$HTTP["host"] ~= "^www.(.*)$" {
magnet.attract-physical-path-to = ( "/path/to/canonical.lua" )
}
  1. 编写简单的规范.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

相关内容

  • 没有找到相关文章

最新更新