No Apache Httpd 2.4, sei que a partir de um .htaccess
arquivo posso fazer isso
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
RewriteRule (.+)\.jpg$ $1.webp [T=image/webp]
para implementar a negociação de conteúdo e para uma solicitação jpg, retorne um webp se o navegador suportar.
Tudo bem, gostaria de enviar a solicitação ao Symfony quando o arquivo webp não existir, para que um controlador específico do Symfony possa criar a versão webp sob demanda, sei que poderia fazer isso
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
RewriteRule (.+)\.jpg$ $1.webp [T=image/webp]
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/$1.webp !-f
RewriteRule (.+)\.jpg$ index.php [PT]
mas isso envia para o Symfony a solicitação jpg original, é de alguma forma possível .htaccess
reescrever para enviar ao Symfony a solicitação webp?
Sim, mas não é necessário o
.jpg
pedido original para saber como gerar a.webp
imagem correspondente? O.webp
caminho da URL é idêntico, exceto pela extensão do arquivo. Você então realizaria as mesmas verificações em seu código PHP... você já sabe que o.webp
arquivo não existe, então você só precisa verificar oAccept
cabeçalho da solicitação HTTP, gerar a.webp
imagem e servi-la (ou um 404 se não houver imagem ).Não é possível "reescrever" a solicitação para webp e esperar que o Symfony a atenda sem alterar fundamentalmente a maneira como o Symfony verifica a solicitação. (Embora eu não veja por que você precisaria fazer isso de qualquer maneira, como mencionado acima.)
Você poderia talvez passar um parâmetro de URL para indicar ao seu script que uma
.webp
imagem deve ser gerada, mas isso não nega a necessidade das mesmas verificações acima, portanto não é realmente necessário. Por exemplo:O
generate-image
parâmetro URL contém então o caminho de URL relativo à raiz do documento (sem prefixo de barra) da.webp
imagem a ser gerada.NB: Você deve usar o
L
sinalizador nesta regra, nãoPT
. Suas outras regras também devem incluir aL
bandeira.