0

LiteSpeed Web サーバーと htaccess ファイルを使用して、jpeg または png 画像がある自分の Web サイトに webp 画像を表示しようとしています。

Webp 画像の名前が原因で、スニペットが機能しません。拡張子を変更する代わりに、私のコンバーターは新しい拡張子を画像の完全な名前に追加しました。例:

通常の写真の URL:

http://domain.tld/path/to/pic/image.png (or jpe?g)

webp 写真の URL:

http://domain.tld/path/to/pic/image.png.webp

これは私のhtaccessがどのように見えるかです:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_URI}  (.*)(\.(jpe?g|png))$
RewriteRule .* %1\.webp [L,T=image/webp] 
</IfModule>
<IfModule mod_headers.c>
Header append Vary Accept env=REDIRECT_accept
</IfModule>
AddType image/webp .webp

問題は RewriteRule にあると思います。私が得ている結果は次のとおりです。

http://domain.tld/path/to/pic/image.webp

それ以外の:

http://domain.tld/path/to/pic/image.png.webp (or jpe?g.webp)

RewriteRule 行をこれに変更しようとしましたが、うまくいきませんでした:

RewriteRule .* %1\.(jpe?g|png).webp [L,T=image/webp]

誰かがこれに光を当てることができますか? 私は htaccess の初心者であり、これを機能させるために正しい構文を使用していないことを知っています。これは、ページを調べて画像を確認したい場合のウェブサイトです: LEXSTYLE どんな助けも本当に感謝しています. ありがとう。

4

1 に答える 1

-1

条件を定義せずに、ルールの出力部分 ((jpeg|jpg)|png) に「or」があります。

これを解決するには、次のように (.*) を使用して $1 を設定します。

RewriteRule ^/path/to/imgdir(.*) /path/to/imgdir$1.webm

以前はすでに制限があったため、これは安全です。

RewriteCond %{REQUEST_URI}  (.*)(\.(jpe?g|png))$

さらに、条件に .webp ファイルが存在することを再確認することを検討することもできます。

RewriteCond %{DOCUMENT_ROOT}/$1\.webp -f

また、推奨される方法が次のようになったことにも注意してください。

<picture>
  <source srcset="/path/to/image.webp" type="image/webp">
  <img src="/path/to/image.jpg" alt="">
</picture>

(これは、CSS スタイルシートの背景ファイルなどで使用するのにはまだ役に立ちません)

于 2018-12-06T15:55:19.060 に答える