今天我在 Centos 7.3 上运行 httpd 时遇到了这个问题。我们大量获取 apache 生成的 HTML 文档用于文件下载。显然,如果文件名中有冒号,apache 会在 HTML 中的文件名前面添加“./”.这使我们的脚本出错了:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<title>Index of /some_path/dir</title>
</head>
<body>
<h1>Index of /some_path/dir</h1>
<pre><img src="/icons/blank.gif" alt="Icon "> <a href="?C=N;O=D">Name</a> <a href="?C=M;O=A">Last modified</a> <a href="?C=S;O=A">Size</a> <hr><img src="/icons/back.gif" alt="[PARENTDIR]"> <a href="/some_path">Parent Directory</a>
<img src="/icons/text.gif" alt="[TXT]"> <a href="./file1:has_colon.bios">file1:has_colon.bios</a> 2018-04-03 07:13 234K
<img src="/icons/text.gif" alt="[TXT]"> <a href="./file2:has_colon.bios">file2:has_colon.bios</a> 2018-04-03 07:13 234K
<img src="/icons/text.gif" alt="[TXT]"> <a href="file3_has_no_colon.bios">file3_has_no_colon.bios</a> 2018-04-03 07:13 234K
<hr></pre>
</body></html>
有人知道这是为什么吗?它是否正在执行某种名称强制?我可以关闭它吗?
编辑
如下文所指出的,这是由于 URI 命名约定造成的。我发现以下内容有助于初步理解: https://stackoverflow.com/questions/176264/uri-a-url-and-a-urn 之间有什么区别?
答案1
这样做是为了防止相对的URI 被误解为绝对URI 具有未知的方案。它是不是您想关闭某些功能,因为损坏会更严重。修复脚本来处理这个问题应该很简单。