Назад | Перейти на главную страницу

Apache добавляет «./» к именам файлов с двоеточиями в них.

Я столкнулся с этим сегодня, запустив 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 с неизвестной схемой. это не что-то хочется выключить, так как поломка будет еще хуже. Исправить ваш скрипт, чтобы справиться с этим, должно быть тривиально.