【问题标题】:Redirect all files of a type with htaccess使用 htaccess 重定向所有类型的文件
【发布时间】:2013-09-08 04:06:39
【问题描述】:

我正在清理我的网络空间,并且已将所有 PDF 从顶层目录移至较低级别的目录。我想重定向,以便旧 URL 仍然有效。到目前为止我所拥有的是

RedirectMatch 301 (.*)\.pdf$ http://example.com/uploads/papers/$1.pdf

问题是这也会将http://example.com/uploads/papers/paper.pdf 之类的东西重定向到http://example.com/uploads/papers//uploads/papers/paper.pdf 等等,从而导致无限重定向。

我尝试从匹配项或“上传”一词中排除正斜杠,但没有成功。

【问题讨论】:

    标签: regex .htaccess regex-negation


    【解决方案1】:

    如果 PDF 之前仅位于根 /

    RedirectMatch 301 ^/([^/]+)\.pdf$ http://mysite.com/uploads/papers/$1.pdf
    

    或者,例如在/uploads 内部;但是一些单一的目录

    RedirectMatch 301 ^/uploads/([^/]+)\.pdf$ http://mysite.com/uploads/papers/$1.pdf
    

    如果 PDF 可以位于任何地方,那么您需要将条件规则设置为

    RewriteEngine on
    RewriteBase /
    
    RewriteCond %{REQUEST_URI} !^/uploads/papers/ [NC]
    RewriteRule (.*)\.pdf$ /uploads/papers/$1.pdf [NC,L]
    

    上述条件规则假设您的.htaccess 位于网络根/ 目录中。

    【讨论】:

    • 前两个仍然让我进入重定向循环——不知道为什么。第三种解决方案有效。也许值得注意的是,您需要先切换RewriteEngine On,以防有人遇到同样的问题并找到此解决方案。
    • 旧的 pdf 链接指向哪里?如果 root 可以尝试将 ^/ 添加到匹配项中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多