http 标头中有一个名为的字段accept
,因此客户端可以指定首选格式。如何配置在纯文本请求的情况下nginx
返回markdown
页面,并在 html 请求的情况下通过某种 markdown 实现进行处理?
答案1
部分解决方案(也是最简单的方法)是通过内部重定向。您可能希望将它们放在 内error_page
location
,以便仅在未找到页面时才激活它。
error_page 404 = @404;
location @404 {
if ($http_Accept ~ "text/plain") {
rewrite ^ $uri.text-plain break;
}
if ($http_Accept ~ "text/html") {
rewrite ^ $uri.text-html break;
}
location ~ \.text-plain$ {
…
}
location ~ \.text-html$ {
…
}
}
这不会考虑到Accept
标题中指定的优先级,而且“text/plain”和“text/html”的明确示例在现有浏览器中可能也没什么用——我不确定哪些用户代理会text/plain
在其Accept
标题中指定。
在过去,Accept
它对于决定是否提供.gif
png.png
图像很有用,但是现在不再有用了——现在认为所有浏览器都已经并且始终支持 png 图像,并且在接受标头中发送额外的字节不值得额外的流量,因此,例如,Mozilla 不再明确Accept
地提供pngimage/png
图像,并且大多数其他浏览器可能也会效仿。