将路径名添加到下载文件名

Add path name to downloading file name

我希望人们能够下载几个总结我所教课程的文件。文件以 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>

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

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

也许正则表达式可以做到这一点,但我不知道是哪一个……感谢您的帮助!

将此代码放入您的主目录 ,htaccess 文件 :

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

如果一切正常,将 302 更改为 301 以获得永久重定向

多亏了这个 answer,我找到了正确的 .htaccess:

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

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

由于我不太了解 .htaccess 语法,因此欢迎任何更好的建议或评论...