无法通过 htaccess mod_rewrite 提供 Webp 图像

问题描述 投票:0回答:1

在开始解释我的问题之前,我想指出我是 BCA 学生,目前正处于学习阶段。我不是一个经验丰富的开发人员。我在一家 IT 公司兼职,担任高级内部 SEO 主管(高级是因为我在这里工作了 2 年多。)我目前正在学习 python,并且对 HTML 和 CSS 有很好的了解。

问题 最近,我决定使用下一代(由 Google Page Speed 引用)webp 格式更新我网站上的所有大尺寸 png/jpg 图像。我遵循了 web.dev (https://web.dev/articles/serve-images-webp) 和 Digital ocean (www.digitalocean.com/community/tutorials/how-to-create-) 的指南and-serve-webp-images-to-speed-up-your-website),由于我公司的网站非常庞大,大约有 70-80K 页面和 100K+ 图像,我决定使用 mod_rewrite 方法。虽然我可以使用PHP甚至Python来编辑html,但由于页面数量庞大,我选择了mod_rewrite方法。我将此代码添加到我的 .htaccess 文件中,该文件位于我网站的根目录下。

<ifModule mod_rewrite.c>
  RewriteEngine On 
  RewriteCond %{HTTP_ACCEPT} image/webp
  RewriteCond %{REQUEST_URI}  (?i)(.*)(\.jpe?g|\.png)$ 
  RewriteCond %{DOCUMENT_ROOT}/assets/webp/$1.webp -f
  RewriteRule (?i)(.*)(\.jpe?g|\.png)$ %1\.webp [L,T=image/webp,R] 
</IfModule>

<IfModule mod_headers.c>
  Header append Vary Accept env=REDIRECT_accept
</IfModule>

AddType image/webp .webp

这里我做了一点改动,添加了一个单独的目录来存放webp(ROOT/assets/webp/)。不幸的是,这个重写不起作用。

我上网寻找可能的解决方案,但我所有的尝试都是徒劳的。我尝试了很多方法来解决该问题,但未能成功。

  1. 我将对应的 webp 文件名更改为 img.png.webp
  2. 我推测由于我设置了很多重定向,mod_rewrite 在 apache 配置中处于打开状态。
  3. 由于我们是自托管的,我要求 IT 人员重新加载 Apache 服务器。

什么都不起作用。在我绝望的尝试中,我什至要求 GPT AI 模型纠正问题,但建议使用与我上面执行的相同的故障排除方法。

html apache .htaccess webp
1个回答
0
投票

我使用该代码:

RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_FILENAME} (.*)\.(png|gif|jpe?g)$
RewriteCond %{REQUEST_FILENAME}\.webp -f
RewriteRule ^ %{REQUEST_FILENAME}\.webp [L,T=image/webp]

<IfModule mod_headers.c>
    <FilesMatch "\.(png|gif|jpe?g)$">
        Header append Vary Accept
    </FilesMatch>
</IfModule>

正如 arkascha 提到的,“R”看起来不对。

© www.soinside.com 2019 - 2024. All rights reserved.