我在 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站点写入
首先,我不是这方面的专家,只是发表我的拙见,如果您觉得建议太明显,请宽容我🙃。
根据我对问题的理解,您可以尝试以下操作:
尝试看看 WebP 重写规则是否出现在 WordPress 包罗万象之前 统治还是不统治?应该的。
IIS 中的规则顺序很重要。
我认为你已经这样做了,但以防万一看看是否常规 表达式匹配 .jpg 和 .png 文件。
您可以尝试使用 {DOCUMENT_ROOT} 而不是 {REQUEST_FILENAME} 来检查 WebP 文件是否存在(如果您还不存在)。
正如 @GTK 在评论中提到的 Rewrite 和 Redirect 可能会产生不同的影响,因此您也可以尝试使用 Rewrite 而不是 Redirect 来提供 WebP 文件而不更改 URL。
我认为您提到您已经这样做了,但只是为了方便说明,请确保在该部分中正确设置了 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 重置,以确保更改生效。
希望您能解决您的问题,祝您好运。 👍😇