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(临时)重定向 - 因此浏览器不应缓存(至少默认情况下不会)。
所以我一直在编写代码,在不更改 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(临时)重定向 - 因此浏览器不应缓存(至少默认情况下不会)。