在WP站点的wp-content/ploads/目录中设置301重定向到新的图像URL

时间:2021-09-14 作者:kawnah

我需要在wp-content/uploads/ - 使用新的图像名称,因为旧的名称不起作用。你是怎么做到的?

我想从重定向https://example.com/wp-content/uploads/2021/09/image-1.pnghttps://example.com/wp-content/uploads/2021/09/image-2.png - 我试着使用我们的301重定向插件(Yoast, 和Redirection) 但两者都不起作用。

我也试着改变.htaccess 来自以下地址(https://wordpress.org/support/topic/htaccess-cant-redirect-file-under-wp-content/):

# ...stuff above

# END WordPress

RedirectMatch 301 (?i)/wp-content/uploads/2021/09/image-1.png https://website.com/wp-content/uploads/2021/09/image-2.png

# ...stuff below
但它没有起作用。

你是怎么做到的?

1 个回复
SO网友:MrWhite

如果此图像不存在,则在重定向发生之前,请求将被重写到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服务器配置中实现,您可能没有访问权限?)。这可能需要主机的支持请求。

相关推荐

Redirect htaccess

我需要帮助重定向我的页面。例如,我有网站https://example.com. 我需要将内容从https://example.com 到https://example.com/blog. 这不是问题,我通过更改主页URL来做到这一点。这很有效。但现在我需要添加来自旧的重定向https://example.com 到https://xmpl.com.我想用。htaccess,但这不起作用。你们能帮帮我吗?以下是我对此的一些尝试,但两者都不起作用。RewriteEngine On RewriteRu