Я столкнулся с этим сегодня, запустив httpd на Centos 7.3. Мы делаем много необработанных документов HTML, сгенерированных apache, для загрузки файлов. По-видимому, если имя файла имеет двоеточие, 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/what-is-the-difference-between-a-uri-a-url-and-a-urn
Это сделано для предотвращения того, что родственник URI не может быть ошибочно истолкован как абсолютный URI с неизвестной схемой. это не что-то хочется выключить, так как поломка будет еще хуже. Исправить ваш скрипт, чтобы справиться с этим, должно быть тривиально.