IIS10的默认规则不允许双重转义,若是访问如“视频60V+30G”文件夹则会报错"staus 404".
这是因为虽然在window下,加号(+)是合法的文件名,但是在Url里却代表了不同的意思:
- 若是作为queryString的一部分,那么+号代表空格:
- 访问 https://www.baidu.com/?dd=ha+ha 和 https://www.baidu.com/?dd=ha%20ha 效果是一样的,解码后,都代表了空格。
- 但是+号作为Url component(注意不是作为queryString)时,就是+号本身,不会转义:
- http://www.a.com/date+time/test.html
解决404错误办法:
办法一:IIS10设置允许双重转义
- 【IIS】-【绑定的网站】-【请求筛选】-【隐藏段】-【webconfig】-【编辑功能设置】,勾选“允许双重转义”,确定保存,即可Url访问带有+号的路径。
办法二:使用第三方WebDav客户端
- 群晖WebDav套件可以正常浏览SMB远程挂载并带有+号路径的子目录,且可以播放其下视频(nplayer)。
什么是双重转义?
- 双重转义字符 (例如,"abc\\d") 对于Url,+先转义为space(空格),空格再转义为%20
- 三个转义字符 (例如,abc\\\d)