添加路径名以下载文件名

时间:2018-02-06 16:23:30

标签: .htaccess filenames content-disposition

我希望人们能够下载几个总结我正在教授的课程的文件。文件是pdf组织在这样的文件夹中:

.htaccess
01-science/
   lesson-1/
      notes.pdf
      slides.pdf
   lesson-2/
      notes.pdf
      slides.pdf
…

.htaccess文件已强制使用以下命令下载文件:

<Files *.pdf>
   ForceType application/octet-stream
   Header set Content-Disposition attachment
</Files>

我提供了直接访问文件的网址,例如https://lessons.domain.my/01-science/lesson-1/notes.pdf。但是,为了避免混淆,在下载时,我希望文件名以文件夹名称作为前缀,以便提供:

01-science-lesson-1-notes.pdf
01-science-lesson-1-slides.pdf

也许一个正则表达式可以做到这一点,但我无法得到哪一个...感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

将此代码放在主目录,htaccess文件中:

RewriteEngine On
RewriteRule ^(.*)/(.*)/(.*)\.pdf$  /$1-$2-$3.pdf [L,NE,R=302]

如果一切顺利,请将302更改为301以获得永久重定向

答案 1 :(得分:0)

感谢这个answer,我找到了正确的.htaccess:

RewriteRule ^(.*)\.pdf$ - [E=FILENAME:$0]
<FilesMatch "\.(?i:pdf)$">
    ForceType application/octet-stream
    Header set Content-Disposition "attachment; filename=%{FILENAME}e"
</FilesMatch>

因此,网址https://lessons.domain.my/01-science/lesson-1/notes.pdf会以notes.pdf的名称下载文件01-science_lesson-1_notes.pdf,该文件非常适合。

由于我不太了解.htaccess语法,所以对于任何更好的建议或评论都是开放的......