如果此图像不存在,则在重定向发生之前,请求将被重写到WordPress前端控制器。
请尝试使用.htaccess
文件,在# BEGIN WordPress
代码块:
RewriteRule ^(wp-content/uploads/2021/09)/image-1\\.png$ https://%{HTTP_HOST}/$1/image-2.png [R=302,L]
The
$1
替换字符串中的反向引用可以避免重复完整的URL路径。(
$1
包含
wp-content/uploads/2021/09
- 从中捕获
RewriteRule
图案)
请注意,这是一个302(临时)重定向。如果这是永久性的,则更改为301,但只有在您测试了它是否按预期工作后,才能更改为301,以避免潜在的缓存问题。
或者,您可以创建一个.htaccess
文件位于/wp-content/uploads/2021/09/.htaccess
- 将覆盖父级.htaccess
文件,并允许您;简化“*1指令。例如:
# /wp-content/uploads/2021/09/.htaccess
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(.+)/[^/]+$
RewriteRule ^image-1\\.png$ https://%{HTTP_HOST}/%1/image-2.png [R=302,L]
The
%1
backreference包含指向图像文件的URL路径(从前面的CondPattern中捕获)。
(好的,这是有争议的。)
<小时/>UPDATE: 澄清404 nginx
tl;dr您可能需要联系您的主机(WPEngine)才能弄清真相。
您可以有两种方案中的一种(可能是第二种)。要么:
您位于Nginx服务器上,因此.htaccess
文件不适用。您需要在WordPress本身中执行此重定向(例如,使用插件)。但是,您尝试的插件似乎不起作用(我假设您得到的是相同的404 nginx响应),这让我相信您有#2
您使用的是Apache,但Apache前面有一个Nginx前端代理,配置为提供静态内容(从/wp-content/uploads
). 对这些资源(或文件系统的这个区域)的请求完全由Nginx处理。该请求甚至没有到达Apache/WordPress,这就是为什么您看到的是Nginx生成的404响应。
需要将Nginx代理配置为允许请求通过Apache,以便您可以实现重定向(或者重定向需要直接在Nginx服务器配置中实现,您可能没有访问权限?)。这可能需要主机的支持请求。