问题背景:常规方案的局限性
在搭建PDF文档中心时,我们常依赖Nginx的目录索引(autoindex on
)和字符集配置(charset utf-8
)实现文件预览。但当遇到中文命名的PDF文件时,常规配置往往陷入三大困局:
- 乱码陷阱:浏览器显示文件名乱码,即使配置
charset
也无法根治编码兼容问题; - 路径解析失效:URL自动编码(如
%E6%96%87
)导致Nginx无法正确映射物理路径; - 跨平台差异:Windows/Linux文件系统编码差异加剧兼容复杂度。
破局思路:Script脚本与Nginx的协同作战
最终配置文件如下:
location /pdf目录/ { alias "站点目录"; autoindex on; autoindex_localtime on; autoindex_exact_size off; try_files $uri $uri/ =404; add_after_body /autoindex_js.html; } location = /autoindex_js.html { internal; return 200 '<script> document.addEventListener("DOMContentLoaded", function() { var links = document.querySelectorAll("a"); links.forEach(function(link) { var href = link.textContent; link.setAttribute("href", href); link.setAttribute("target", "_blank"); link.textContent = decodeURIComponent(link.textContent); }); }); </script>'; }
可以