Wordpress web.config 重写以支持 IIS 上的 webp 文件

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

我在 IIS 上运行我的 Wordpress 网站。

我的网站根目录中有文件 test.jpg 和 test.webp 。 当我直接请求这些文件时,我可以访问这两个文件。 在这里观看直播

我想确保对 .jpg 和 .png 文件的请求被重定向到 .webp 以支持浏览器。我希望我的网站上列出的产品可以使用这个,但我什至无法让这个 test.jpg 文件工作。

我正在更新我的 web.config,它位于我的网站文件夹的根目录中。使用 web.config,因为会触发这样的规则:

    <rule name="Test Rewrite 0" stopProcessing="true">
      <match url=".*" />
      <action type="Rewrite" url="index.php" />
    </rule>
    

然后我删除了所有内容并只有这条规则:

    <rule name="Redirect test.jpg to test.webp" stopProcessing="true">
      <match url="(.*)test\.jpg" />
      <conditions logicalGrouping="MatchAll">
        <add input="{HTTP_ACCEPT}" pattern="image/webp" />
        <add input="{REQUEST_FILENAME}.webp" matchType="IsFile" />
      </conditions>
      <action type="Rewrite" url="{R:1}test.webp" />
    </rule>

在 IIS MIME 类型中我添加了:.webp、image/webp、Local

但是当我请求 www.example.com/test.jpg 时什么也没有发生。没有控制台错误,没有重定向。 我清除了缓存,重新启动了 IIS。

我还可以尝试什么?

我已经在这里检查过:

在IIS服务器的web.config中为wordpress站点写入 在 WordPress 上的图像 URL 中附加扩展名以支持 webp 如果浏览器在 IIS 中支持,则有条件地提供 webp 图像

wordpress iis url-rewriting web-config webp
1个回答
0
投票

首先,我不是这方面的专家,只是发表我的拙见,如果您觉得建议太明显,请宽容我🙃。

根据我对问题的理解,您可以尝试以下操作:

  • 规则排序

尝试看看 WebP 重写规则是否出现在 WordPress 包罗万象之前 统治还是不统治?应该的。

IIS 中的规则顺序很重要。

  • 正则表达式

我认为你已经这样做了,但以防万一看看是否常规 表达式匹配 .jpg 和 .png 文件。

  • 状况检查

您可以尝试使用 {DOCUMENT_ROOT} 而不是 {REQUEST_FILENAME} 来检查 WebP 文件是否存在(如果您还不存在)。

  • URL重写

正如 @GTK 在评论中提到的 RewriteRedirect 可能会产生不同的影响,因此您也可以尝试使用 Rewrite 而不是 Redirect 来提供 WebP 文件而不更改 URL。

  • MIME 类型

我认为您提到您已经这样做了,但只是为了方便说明,请确保在该部分中正确设置了 WebP 的 MIME 类型。

我认为

web.config
文件看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <!-- WebP Rewrite Rule -->
        <rule name="Serve WebP" stopProcessing="true">
          <match url="(.*)\.(jpe?g|png)$" ignoreCase="true" />
          <conditions logicalGrouping="MatchAll">
            <add input="{HTTP_ACCEPT}" pattern="image/webp" />
            <add input="{DOCUMENT_ROOT}/{R:1}.webp" matchType="IsFile" />
          </conditions>
          <action type="Rewrite" url="{R:1}.webp" />
        </rule>

        <!-- WordPress Rewrite Rule -->
        <rule name="WordPress" stopProcessing="true">
          <match url="^index\.php$" ignoreCase="false" />
          <action type="None" />
        </rule>
        <rule name="WordPress Rewrite" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php" />
        </rule>
      </rules>
    </rewrite>
    <staticContent>
      <mimeMap fileExtension=".webp" mimeType="image/webp" />
    </staticContent>
  </system.webServer>
</configuration>

哦,另一方面,不仅仅是为了提醒您,您应该确保在更改 web.config 文件后执行 IIS 重置,以确保更改生效。

希望您能解决您的问题,祝您好运。 👍😇

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