【问题标题】:.htaccess redirect for .pdf/.doc file in the root folder.htaccess 重定向根文件夹中的 .pdf/.doc 文件
【发布时间】:2017-06-19 03:35:50
【问题描述】:

我正在尝试创建一个类似于下面的重写规则

RewriteRule ^/?(.*+/.pdf)$ /site-content/import/uploads/$1 [L,R=301]

任何类似于

的url请求
http://hostname/filename.pdf

应该重定向到

http://hostname/site-content/import/uploads/filename.pdf

但如果请求文件名位于子文件夹内,则不应重定向,并且不应重定向 .pdf 或 .doc 文件以外的 url

http://hostname/sub-page/filename.pdf
http://hostname/sub-page/sub/filename.pdf
http://hostname/sub-page
http://hostname/image.png

【问题讨论】:

    标签: php wordpress .htaccess pdf redirect


    【解决方案1】:

    你可以用这个:

    RewriteRule ^([^/.]+\.pdf)$ /site-content/import/uploads/$1 [R,L]
    

    或者这个:

    RedirectMatch ^/([^/.]+\.pdf)$ /site-content/import/uploads/$1
    

    在测试此重定向之前清除浏览器缓存。

    编辑:

    以上示例仅重定向 .pdf 文件,同时重定向 .pdf 和 .doc ,您可以使用此规则:

    RewriteRule ^[^/.]+\.(pdf|doc)$ /site-content/import/uploads%{REQUEST_URI} [L,R]
    

    【讨论】:

    • 它是否也匹配/filename.pdf?它也只匹配 .pdf 文件。
    【解决方案2】:

    尝试正则表达式^/[^/]+\.(pdf|doc)$。将首先匹配/,任何不是/ 并以.pdf.doc 结尾的字符。

    Regex101 example


    RewriteRule ^/([^/]+\.(?:pdf|doc))$ /site-content/import/uploads/$1 [L,R=301]
    

    【讨论】:

    • 那么完整的重写规则应该是怎样的呢?
    • 我在martinmelin.se/rewrite-rule-tester 也检查过同样的问题,但出了点问题。
    • 这不适用于 htaccess 上下文,因为它包含一个前导斜杠。
    • 我已经使用了这个 RewriteRule ^([^/.]+\.(?:pdf|doc))$ /site-content/import/uploads/$1 [R,L] 并且似乎工作这里htaccess.mwl.be
    猜你喜欢
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 2017-09-08
    • 2019-03-03
    相关资源
    最近更新 更多