使用重定向插件和正则表达式仅将 pdf 文件从 html 站点重定向到新的 wordpress 目录

Redirect only pdf files from html site to new wordpress directory using redirection plugin and regex

我只想将在旧 html 站点的根目录下找到的 PDF 重定向到特定的 WordPress 上传目录。但我需要确保我最终不会在根级别将 all pages/files 发送到上传目录。

所以我想让它做这样的事情:

来自 http://www.oldsite.com.au/*.pdf https://www.newsite.com/wp-content/uploads/2021/01/*.pdf

我知道这是不正确的格式,但我使用上面的示例来表明我希望重定向获取所有以 .pdf 结尾的文件,并将它们重定向到新位置的相同文件名。

我正在使用 WordPress 重定向插件进行正则表达式重定向。

这是一个将 所有文件 从根目录移动到 selected 目录的正则表达式示例。

Source URL: ^/(.*)
Target URL: https://www.newsite.com/wp-content/uploads/2021/01/

我需要帮助的是如何将源 URL 调整为 select 只有 PDF 文件,然后将完整的文件名传递给目标 URL(包括 .pdf 扩展名)

更新:

我想我找到了一个可能适合我的方法。

Source URL: ^/(.*).pdf
Target URL: https://www.newsite.com/wp-content/uploads/2021/01/.pdf

对于这种 url:http://www.oldsite.com/abc.pdf

,它确实如我所愿地正常工作

但不幸的是,它也采用了这种 URL,并且基本上给了它一个无限的重定向循环; http://www.oldsite.com/dir1/dir2/abc.pdf

我原以为将 ^ 放在 / 之前会将其限制为仅根目录,而不会同时选取所有后续目录。但我猜 (.*) 是允许 url 中出现在 .pdf(包括目录)之前的任何内容的地方。

任何人都可以给我一个示例,说明如何阻止它在根目录之外查找 PDF 吗?

注意:SOURCE URL 的正则表达式需要您要重定向的 relative URL来自.

补充说明:插件“重定向”使用PHP的正则表达式。这些通常称为 PCRE,可能与其他正则表达式库不完全相同。

感谢任何建议! SunnyOz

您可以在匹配前导正斜杠后使用捕获组:

^\/([^\s\/]+\.pdf)

如果您可以使用与 / 不同的定界符,则不必取消反斜杠。

^/([^\s/]+\.pdf)

看到一个Regex demo

模式匹配:

  • ^ 字符串开头
  • /字面匹配
  • ( 捕获组 1
    • [^\s/]+ 否定字符 class,匹配任何字符 1+ 次,除了 whiteapace 字符或 /
    • \.pdf 匹配 .pdf
  • ) 关闭组 1

如果要断言字符串结束,可以在模式末尾添加$