В заголовке http есть поле с именем accept
, чтобы клиент мог указать предпочтительный формат. Как мне настроить nginx
возвращаться markdown
страница в случае запроса обычного текста и обрабатывается с помощью некоторой реализации уценки в случае запроса html?
Частичное решение (и самый простой способ) - внутреннее перенаправление. Вы, вероятно, захотите, чтобы они были внутри 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, и отправка дополнительных байтов в заголовке accept не стоит дополнительного трафика, поэтому, например, Mozilla больше не Accept
с image/png
явно, и большинство других браузеров, вероятно, тоже последуют этому примеру.