Каковы права/Разрешенные символы для имен файлов веб-сервера?
Какие символы разрешены в именах файлов для HTML файлов на ВСЕХ серверах (* nix, Windows и т.д.)?
Я ищу "самый низкий общий знаменатель", который будет работать на всех серверах.
ИСПОЛЬЗОВАНИЕ: Я пишу файл, который будет публиковаться публично (Mysite.com/My-Page.htm)
Например, пробел? _ - и т.д.
Например, могу ли я использовать File-Name.htm, File_Name.htm File Name.htm?
Очевидно, что это необходимо для работы со всеми серверами и браузерами. (IIRC, имя ограничено сервером, а не браузером, но я могу ошибаться).
Ответы
Ответ 1
Какие символы разрешены в именах файлов для файлов HTML на серверах?
Это полностью зависит от сервера. Сам HTTP разрешает любой символ вообще, включая управляющие символы и символы, отличные от ASCII, если они соответствующим образом% -кодированы по запросу в URL-адресе.
На сервере Unix вы не можете использовать '/или нулевой байт. (Если вы можете использовать их, они будут отображаться в URL как "% 2F и" % 00 соответственно.) У вас также не могут быть определенные имена файлов ". или '.., или пустую строку.
На сервере Windows у вас есть все ограничения на сервере Unix, плюс вы также не можете использовать какой-либо из \/:*?"<>|
или управляющих символов 1-31, и вы не можете иметь ведущую или конечную точку или пробелы, а вы 'будет трудно использовать какие-либо имена файлов устаревших устройств (CON, PRN, COM1 и многие другие).
Это не связано с HTTP; как работают имена файлов в Windows, сложный.
Могу ли я использовать File-Name.htm, File_Name.htm File Name.htm?
Конечно. Но в последнем случае вы должны ссылаться на него путем URL-кодирования пространства:
<a href="File%20Name.htm">thingy</a>
Браузеры обычно позволят вам уйти, оставив пространство, но это действительно не так. Если вы не хотите думать об экранировании URL-адресов, проблемах с экранированием HTML и чувствительных к регистру вопросов, придерживайтесь a-z, 0-9 и подчеркивания.
Ответ 2
Обязательно устраните
* . " / \ [ ] : ; | = ,
которые никогда не разрешены, из-за несоответствий в стандартах использования имен файлов стандартная практика заключается в использовании a-z и 0-9 и символа подчеркивания. Пространство необходимо большинству пользователей, но если вы можете уйти от его использования, возникают проблемы с синтаксическим разбором, которые повышают надежность, вы можете прочитать rfc на mime (многостраничные расширения электронной почты Интернета), чтобы получить представление о том, что задействовано.
Независимо от того, что вы делаете, что-то где-то может осложнить жизнь - настолько, что теперь я использую криптографические методы для генерации случайных строчных строчек az и использую их как имена файлов, вставляя полезную информацию в исходный код файла.
Избегайте амперсанда любой ценой,...
Ответ 3
Если вы не хотите, чтобы ваши имена файлов были закодированы сервером, вам следует избегать зарезервированных символов: $& +,/:; =? @и небезопасные символы: пробел, кавычки, < > #% { } |\^ ~ [] `
Но, как указывалось в предыдущих ответах, веб-серверы должны справляться с тем, что вы хотите использовать, кодируя символы.
Ответ 4
Существует не такая вещь, как имя файла html.
Некоторые символы должны быть закодированы в html (например, если они используются в ссылках), но допустимые символы в именах документов будут зависеть от веб-сервера (и, возможно, файловой системы на сервере).
Ответ 5
Любое имя файла будет URL-encoded, поэтому вы должны быть в порядке. И для записи все три имени вашего файла будут работать нормально.
Ответ 6
Я бы сказал, что правильное правило для имен файлов для файлов HTML на ВСЕХ серверах может быть любой комбинацией алфавита (предпочтительным для нижнего регистра) и числовых символов (1 хотя и 9), плюс подчеркивание (_), минус (-) или плюс (+), но без пробелов. Кроме того, завершите имя файла с помощью точки html (например, filename.html). Я лично избегаю использовать символы подчеркивания и плюс.