Puncte:3

htaccess rescrie /dir/*.jpg în /dir/webp/*.webp numai când există fișierul webp

drapel cn

Încerc să rescriu toate fișierele site-ului web (*.jpg|*.gif|*.png) la *.webp într-un subdir, dar numai atunci când *.webp fisierul exista.Fișierele anterioare și cele noi au același nume, schimbând doar extensia și *.webp fișierele sunt toate sub subdir-ul celui original.

Mă lupt cu htaccess pentru a face treaba. Regulile de bază sunt:

  1. Se potrivește numai cu fișierul PNG/JPG/GIF
  2. Modelul director imagini originale este: /site/views/00_projects/[NUME VARIABIL DIR PRINCIPAL AICI]/content/image/[NUME VARIABIL SUBDIR AICI]/*.jpg
  3. Nou *.webp dir este modelul este: /site/views/00_projects/[NUME DIR VARIABIL AICI]/content/image/[NUME DIR VARIABIL AICI]/webp/*.webp
  4. Numai rescrieți dacă fișierul webp există

Chiar nu am idee cum să o fac să funcționeze. Poate cineva să ajute?

Puncte:4
drapel kz

Strict vorbind, trebuie de asemenea să vă asigurați că agentul utilizator care face cererea acceptă imaginile WEBP (de exemplu, verificați Accept Antetul solicitării HTTP pentru imagine/webp).

Încercați următoarele în partea de sus a rădăcinii .htaccess fişier:

RewriteEngine Pornit

# Rescrieți imaginile în WebP dacă există
RewriteCond %{HTTP_ACCEPT} imagine/webp
RewriteCond %{DOCUMENT_ROOT}/$1/webp/$2.webp -f
RewriteRule ^(site/views/00_projects/[^/]+/content/image/[^/]+)/([^/]+)\.(?:png|jpg|gif)$ 1/webp/$2 .webp [T=imagine/webp,L]

The RewriteRule model (adică ^(site/views/00_projects/[^/]+/content/image/[^/]+)/([^/]+)\.(?:png|jpg|gif)$) se potrivește cu cel solicitat png, jpg sau gif imagine și salvează calea URL în fișierul $1 backreference și numele fișierului în fișierul $2 backreference (utilizată mai târziu în RewriteRule substituţie şir).

Primul condiție (RescrieCond directivă) care verifică împotriva HTTP_ACCEPT variabila server, verifică dacă user-agent acceptă imagini WEBP.

Al doilea condiție verifică dacă imaginea webp țintă există.

The T=imagine/webp steag este necesar pentru a trimite tipul mime corect (Tipul de conținut antet) înapoi către client.

drapel cn
A funcționat ca un farmec, MULȚUMESC MULT! O mică întrebare: cu acest cod, URL-ul păstrează calea fișierului original (cu *.jpg, adică); de ce ar avea nevoie pentru a redirecționa către calea URL *.webp dacă aceasta există și browser-ul o acceptă?
drapel kz
@DiegoFlores Cu placere. Pentru o „redirecționare” _permanentă_ ați adăuga un flag `R=301` la directiva `RewriteRule` și atunci nu veți avea nevoie de indicatorul `T`. adică. „[R=301,L]”. Cu toate acestea, în general, ar trebui să evitați o redirecționare externă dacă acestea sunt mai multe imagini în pagină, deoarece vă încetinește potențial utilizatorii (rău pentru SEO) și dublează cererile care lovesc serverul dvs., umplându-vă jurnalele cu mase de 301 pentru ceea ce sunt "normale". cereri. Dacă conectați la fișiere `.jpg` etc., păstrați-l ca o rescrie internă, în caz contrar, modificați adresele URL la care faceți legătura.
drapel cn
Multumesc din nou! O sa tin cont! Mă întrebam dacă Google va citi tipul de conținut corect sau doar URL-ul fișierului cu prima soluție atunci când evaluăm SEO/PageSpeed/etc ;-) Oricum, ai salvat ziua
drapel kz
@DiegoFlores Da, Google va citi „tipul de conținut corect” - acesta este scopul steagului „T”. Indiferent dacă „URL-ul” se termină în `.jpg` (sau orice altceva) este irelevant - nu URL-ul este cel care determină tipul mime.
drapel kz
@DiegoFlores Dacă aceasta a răspuns la întrebarea dvs., vă rugăm să o marcați ca „acceptat” făcând clic pe bifa/bifa de lângă răspunsul de sub săgețile de vot (pentru a ajuta alți cititori). Multumesc, foarte apreciat. :)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.