htaccess는 webp 파일이 존재하는 경우에만 /dir/*.jpg를 /dir/webp/*.webp로 다시 작성합니다.

htaccess는 webp 파일이 존재하는 경우에만 /dir/*.jpg를 /dir/webp/*.webp로 다시 작성합니다.

*.jpg|*.gif|*.png모든 웹사이트 파일( ) 을 하위 디렉터리에 다시 쓰려고 하는데 파일이 존재할 *.webp때만 가능합니다 . *.webp이전 파일과 새 파일의 이름은 동일하며 확장자만 변경되고 *.webp파일은 모두 원본 파일의 하위 디렉터리에 있습니다.

나는 그 일을 하기 위해 htaccess에 어려움을 겪고 있습니다. 기본 규칙은 다음과 같습니다.

  1. PNG/JPG/GIF 파일만 일치합니다.
  2. 원본 이미지 디렉토리 패턴은 다음과 같습니다./site/views/00_projects/[VARIABLE MAIN DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/*.jpg
  3. 새로운 *.webp디렉토리의 패턴은 다음과 같습니다:/site/views/00_projects/[VARIABLE DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/webp/*.webp
  4. webp 파일이 존재하는 경우에만 다시 작성

나는 그것을 작동시키는 방법에 대해 전혀 모릅니다. 누군가 도와줄 수 있나요?

답변1

엄밀히 말하면 요청을 수행하는 사용자 에이전트가 WEBP 이미지를 지원하는지 확인해야 합니다(예: Accept에 대한 HTTP 요청 헤더 확인 image/webp).

루트 파일 상단 근처에서 다음을 시도하십시오 .htaccess.

RewriteEngine On

# Rewrite images to WebP if they exist
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/$1/webp/$2.webp -f
RewriteRule ^(site/views/00_projects/[^/]+/content/image/[^/]+)/([^/]+)\.(?:png|jpg|gif)$ $1/webp/$2.webp [T=image/webp,L]

그만큼RewriteRule 무늬(예: ^(site/views/00_projects/[^/]+/content/image/[^/]+)/([^/]+)\.(?:png|jpg|gif)$)는 요청된 또는 이미지와 일치 png하고 역참조 에 URL 경로를 저장 하고 역참조에 파일 이름을 저장합니다 (나중에 사용됨) jpg.gif$1$2RewriteRule 치환끈).

첫번째상태( RewriteCond지시문)은 서버 변수를 확인하여 HTTP_ACCEPT사용자 에이전트가 WEBP 이미지를 지원하는지 확인합니다.

두번째상태대상 webp 이미지가 존재하는지 확인합니다.

T=image/webp올바른 MIME 유형( Content-Type헤더)을 클라이언트에 다시 보내려면 플래그 가 필요합니다.

관련 정보