Htaccess 将一张图片替换为另一张图片

Htaccess replace one image with another one

所以我一直在编写代码,在不更改 link 的情况下将一张图片替换为另一张图片。

下面是我在其中一个论坛上找到的代码。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^.*/fredShip1.png$ /fredShip2.png [L]
</IfModule>

所以这段代码不仅将用户重定向到另一个页面,而且还随机重定向到一个 link。 所以原来的 link 是 http://toss.rf.gd/storage/fredShip1.png 虽然它应该用 http://toss.rf.[=31= 替换图像.png(只是一个例子)但它会将用户发送到这里 toss.rf.gd/home/vol8_1/[帐户信息]/htdocs/storage/FredShip2.png

我也添加了图片 -> The image

我的 htaccess 真的很糟糕,所以如果我错了,请务必纠正我。另外英语不是我的母语,所以可能会出现一些小错误。

编辑:所以我解决了重定向到随机 link 的问题。但我仍然想知道是否可以只更改图像而不更改 link?

RewriteRule ^.*/fredShip1.png$ /fredShip2.png [L]

除了您需要调整路径以匹配您的示例之外,您发布的代码基本上已经完成了您的要求。上述规则的“问题”是它将请求重写为 /fredShip2.png(在文档根目录中),而不是您示例中的 /storage/fredShip2.png

假设 .htaccess 文件位于站点的文档根目录中,并且您希望在内部将请求从 /storage/fredShip1.png 重写为 /storage/fredShip2.png 那么您可以这样做:

RewriteRule ^storage/fredShip1.png$ storage/fredShip2.png [L]

两个参数中的 URL-path 不应有斜线前缀。

如果您的 .htaccess 文件中有其他指令,那么这些指令的顺序可能很重要。

确保您在测试前已清除浏览器缓存。


but it sends the user here example.com/home/vol8_1/[Account info]/htdocs/storage/FredShip2.png

您发布的指令不可能做到这一点。这很可能是由于早期(错误的)301(永久)重定向实验导致的缓存重定向。例如,类似下面的内容会产生上面的“错误”输出:

RewriteRule fredShip1\.png$ storage/FredShip2.png [R=302,L]

请注意 R (redirect) 标志的使用以及 RewriteRule 替换 字符串中缺少斜杠前缀 (第二个参数)。由于 substitution 字符串是“相对的”,因此 directory-prefix (即您的示例中的 /home/vol8_1/[Account info]/htdocs/ )被添加到替换之前,因为这是一个外部重定向(如由 R 标志表示)然后向用户公开绝对文件系统路径。

注意:以上是 302(临时)重定向 - 因此浏览器不应缓存(至少默认情况下不会)。