如何将文件夹中的文件子集重定向到另一个文件夹?

时间:2019-05-22 14:31:46

标签: .htaccess redirect mod-rewrite url-rewriting

我最近接手管理WordPress网站的工作,并做了一些清理工作。我所做的一件事是将一些重要文件重新定位到特定文件夹中,以更好地维护文件修订。我将所有内部链接更新为新路径。

不幸的是,我们的用户为旧位置添加了书签,并且在尝试重新下载文件时得到404。这样做的规模很大,我需要找到一种方法将旧链接指向新链接。

问题:

  1. 旧文件夹仍然包含正在提供给网站其他部分的文件,因此我无法重定向整个文件夹。
  2. 有数百个文件。
  3. 大约有3个文件夹保存着14种不同产品的文件(从位置到位置不是唯一的)。

以下是一些示例:

OLD:

  • /wp-content/uploads/2016/08/HR59-K-F-D.dwg
  • /wp-content/uploads/2016/08/HR59-K-F-D.dwg
  • /wp-content/uploads/2016/08/HR59-A-F-D.step
  • /wp-content/uploads/2019/01/L-A-A-B.igs
  • /wp-content/uploads/2019/01/L-A-B-B.sldprt
  • /wp-content/uploads/2019/01/M-A-C-B.x_t
  • /wp-content/uploads/2019/01/M-A-C-B.dxf

新:

  • /uploads/3Dmodels/Product1/HR59-K-F-D.dwg
  • /uploads/3Dmodels/Product1/HR59-A-F-D.step
  • /uploads/3Dmodels/Product2/L-A-A-B.igs
  • /uploads/3Dmodels/Product2/L-A-B-B.sldprt
  • /uploads/3Dmodels/Product3/M-A-C-B.igs
  • /uploads/3Dmodels/Product3/M-A-C-B.dxf

我在寻找什么 一种查找特定文件夹的子集(基于文件名的开始),并且仅将其重定向/重写到新文件夹的方法。也就是说,关于文件的独特之处是位于1个特定文件夹中时文件名的开头。例如:

示例1:

For files in: /wp-content/uploads/2016/08/
That start with: HR59-
Redirect to: /uploads/3Dmodels/Product1/

示例2:

For files in: /wp-content/uploads/2019/01/
That start with: L-
Redirect to: /uploads/3Dmodels/Product2/

示例3:

For files in: /wp-content/uploads/2019/01/
That start with: M-
Redirect to: /uploads/3Dmodels/Product3/

1 个答案:

答案 0 :(得分:0)

您只需使用RewriteRule

检查适当的模式
RewriteRule ^wp-content/uploads/2016/08/(HR59-[^/]+)$ /uploads/3Dmodels/Product1/$1 [R,L]
RewriteRule ^wp-content/uploads/2019/01/(L-[^/]+)$ /uploads/3Dmodels/Product2/$1 [R,L]
RewriteRule ^wp-content/uploads/2019/01/(M-[^/]+)$ /uploads/3Dmodels/Product3/$1 [R,L]

一切正常后,您可以将R,L替换为R=301,L,但不能testing