Скорее всего дело в разных заголовках "Accept" при запросе ресурса напрямую, и когда он подгружается через
<link href
, так как эти заголовки отличаются от тех которые браузер посылает если вы просто напрямую открываете ссылку в адресной строке.
Посмотрите в браузере во вкладке "Network" какие заголовки посылает браузер при загрузке main.css.php
spoilerтык
Решение этой проблемы - определять поддержку формата в скрипте который отображает страницу и исходя из результатов встраивать стили передавая GET-параметры
main.css.php?avif=1&jpg=1&webp=0
И внутри main.css.php строить логику от GET-параметров
Либо никакой логики в main.css.php не делать, а добавить inline-стили в страницу где перезаписать уже background
<link href="main.css.php"> // <- тут всегда jpg
<style>
body {
background: перезаписываем стили исходя из поддерживаемого формата
}
</style>