【问题标题】:Redirect (rewrite?) subfolders to parent folder重定向(重写?)子文件夹到父文件夹
【发布时间】:2021-07-07 10:36:47
【问题描述】:

我已将所有 PDF 文件从多个子文件夹移至父文件夹 /downloads/ 旧情况举例:

https://www.example.com/downloads/2011/subfolder2/subfolder3/file1.pdf
https://www.example.com/downloads/2011/subfolder4/subfolder5/subfolder6/file2.pdf
https://www.example.com/downloads/2011/subfolder7/file3.pdf
https://www.example.com/downloads/2011/subfolder7/file4.pdf

所以这都是关于 /downloads/2011/ 中不同子文件夹中的 PDF 文件

现在是这样的(还有很多文件):

https://www.example.com/downloads/file1.pdf
https://www.example.com/downloads/file2.pdf
https://www.example.com/downloads/file3.pdf
https://www.example.com/downloads/file4.pdf

我想将搜索引擎中的旧链接重定向到新链接。 所以实际上所有子文件夹(除了下载)都应该从旧网址中删除 或者 网站上所有 PDF 的所有旧链接,无论它们在哪里,都应该重定向到下载文件夹。

我应该如何使用 .htaccess 来实现这些可能性?

【问题讨论】:

  • 欢迎来到 SO,请在您的问题中添加您尝试过的 htaccess 文件,谢谢。
  • 您好,谢谢。我尝试过的其他方法包括:RedirectMatch 301 ^/downloads/$ example.com/downloads RewriteEngine On RewriteRule ^(downloads/)。 /$1 [R,L]

标签: .htaccess redirect url-rewriting


【解决方案1】:

这应该适合你:

 RedirectMatch 301 ^/downloads/.+/([^/.]+)\.pdf$ /downloads/$1.pdf

确保清除浏览器缓存或使用其他浏览器测试重定向。

【讨论】:

    【解决方案2】:
    RewriteRule ^downloads\/.+\/(.+)$ downloads/$1 [R=301]
    

    这应该已经可以解决问题了。

    似乎没有必要对第一个.+ 匹配更具体,或者使用不包括斜杠的字符类;正则表达式的贪婪在这里对我们有利。

    【讨论】:

    • 感谢您的回答。这给出了 403 Forbidden 错误。看起来它重定向到下载文件夹,而不是其中的文件。
    • 您可以尝试使用^downloads\/.+\/([^\\]+)$ 模式,看看是否有效?毕竟,明确要求最后一部分包含斜线可能是必要的,而不是仅仅依靠贪婪。
    • 最初第一个和第二个解决方案只对某些链接有效(尝试了几个清除缓存的浏览器)但突然这两种解决方案都适用于所有文件!我看不出有效和无效的链接结构有任何区别。但无论如何,它现在有效。非常感谢!!!
    • (我在该评论中建议的模式中使用了错误的斜杠,它需要是正斜杠,而不是反斜杠。但如果最初的建议也已经有效,那么意义不大扩展尝试现在纠正它。)
    • 是的,我已经更改了第二个反斜杠。
    猜你喜欢
    • 1970-01-01
    • 2021-09-08
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 2016-08-30
    • 2018-09-30
    • 2017-12-05
    相关资源
    最近更新 更多