2009-09-28 10 views
11

Jakie znaki są dozwolone w nazwach plików dla plików HTML na WSZYSTKICH serwerach (* nix, Windows itp.)? Szukam "najniższego wspólnego mianownika", który będzie działał na wszystkich serwerach. UŻYJ: nazwa pliku, który ma być publicznie udostępniony (Mysite.com/My-Page.htm)Jakie są legalne/dozwolone znaki dla nazw plików serwera WWW?

E.g., space? _ -, itp.

Np. czy mogę mieć plik Nazwa-Name.htm, Nazwa_pliku.htm Nazwa pliku.htm?

Oczywiście musi to działać ze wszystkimi serwerami i przeglądarkami. (IIRC, nazwa jest ograniczona przez serwer, nie przeglądarkę, ale mogę się mylić).

+0

Nazwy plików są ograniczone tylko przez podstawowy system operacyjny i system plików serwera. Na przykład w skrzynkach * nix dozwolony jest dowolny znak z wyjątkiem "/" i wartości null. Czy naprawdę pytasz o nazwy plików, czy też pytasz o linki do nazw plików lub być może odwołania do adresów URL? –

Odpowiedz

18

Jakie znaki są dozwolone w nazwach plików dla plików HTML na serwerach?

To całkowicie zależy od serwera. Sam HTTP dopuszcza dowolny znak, w tym znaki kontrolne i znaki spoza ASCII, o ile są odpowiednio zakodowane w%, gdy jest to wymagane w adresie URL.

Na serwerze Unix nie można użyć "/" ani bajtu zerowego. (Jeśli możesz ich użyć, pojawią się one w adresie URL odpowiednio jako "% 2F" i "% 00".) Nie możesz także mieć określonych nazw plików "." Lub ".." lub pustego ciągu.

Na serwerze Windows masz wszystkie ograniczenia serwera uniksowego, a także nie możesz używać żadnego z \/:*?"<>| lub znaków kontrolnych 1-31 i nie możesz mieć kropki ani spacji wiodących lub końcowych, a Ty " Będą miały trudności z używaniem nazw plików urządzeń starszego typu (CON, PRN, COM1 i wiele innych).

To nie ma nic wspólnego z HTTP; jak działają nazwy plików w systemie Windows, czyli complicated.

Czy mogę mieć File-Name.htm, File_Name.htm File Name.htm?

Oczywiście. Ale w tym ostatnim przypadku należy połączyć z nim przez URL-kodowania przestrzeń:

<a href="File%20Name.htm">thingy</a> 

Przeglądarki zazwyczaj pozwalają uciec z opuszczeniem miejsca w, ale to naprawdę nie jest ważne. Jeśli chcesz uniknąć myślenia o unikaniu URL-i, wychodzeniu z HTML i rozróżnianiu wielkich i małych liter, trzymaj się a-z, 0-9 i podkreślenia.

+1

Może również dodać A-Z do _stick to_-phrase. –

0

Nie ma czegoś takiego jak nazwa pliku html.
Niektóre znaki muszą być zakodowane w html (np. Jeśli są używane w linkach), ale dozwolone znaki w nazwach dokumentów będą zależały od serwera WWW (i ewentualnie od systemu plików na serwerze).

0

Dowolna nazwa pliku będzie URL-encoded, więc powinieneś być w porządku. A dla zapisu wszystkie trzy nazwy plików działałyby dobrze.

1

Jeśli nie chcesz, aby twoje nazwy plików były kodowane przez serwer, powinieneś unikać znaków zastrzeżonych: $ & +, /:; =? @ Oraz niebezpiecznych znaków: spacja, cudzysłowy, <> #% {} | \^~ [] `

Jednak zgodnie z wcześniejszymi odpowiedziami, serwery internetowe powinny radzić sobie z tym, czego chcesz używać, kodując znaki.

2

Pamiętaj, aby wyeliminować

* . "/\ [ ] : ; | = ,

które nigdy nie są dozwolone, z powodu niespójności w pliku Konwencje nazewnictwa standardową praktyką jest stosowanie-Z i 0-9 oraz znak podkreślenia. Przestrzeń jest potrzebna dla większości użytkowników, ale jeśli możesz jej uniknąć, są problemy z parsowaniem, które zwiększają niezawodność, możesz czytać rfc na mime (wieloczęściowych rozszerzeniach poczty internetowej), aby poznać, o co chodzi.

Niezależnie od tego, co robisz, coś może utrudnić życie - tak bardzo, że teraz używam metod kryptograficznych do generowania losowych ciągów małych liter a-z i używania ich jako nazw plików, osadzanie użytecznych informacji w kodzie źródłowym pliku.

ampersanda Unikaj za wszelką cenę ...

+0

Przy wartości nominalnej jest to niepoprawna odpowiedź. Z wyjątkiem "/", wszystkie wymienione przez ciebie znaki są poprawnymi znakami dla nazw plików w systemach uniksowych. Nie powinny być koniecznie używane, ale są ważne. –

+0

Jak mówi Jim, ruch na serwerze powinien kodować wszystko, co nie jest dozwolone w adresach URL - główny examp to miejsce ma być% 20, ale to, co widzisz, to + dla spacji, które również jest znakiem używanym dla + (w moja nie tak skromna opinia) sytuacja jest dokładnie taka, że ​​kot goni za ogonem, gdy już go posiada. –

+0

Tak, Bryan - jest krótki i tani. To tylko pierwsze rzeczy, które usunę, ponieważ nawet jeśli {[%%%]}. Ext robi to przez chmurę serwera, to myli char [256] w fp *. (nie wspominając już o osadzonych wartościach null itd.) kiedykolwiek widziałem awarię os z operatorem kropki w nazwie pliku? –

0

Powiedziałbym, że dobra zasada dla nazw plików HTML dla WSZYSTKICH serwerów może być dowolną kombinacją alfabetu (preferowaną małą literą) i liczbą znaków (1 przez 9) oraz podkreślenia (_), minus (-) lub plus (+), ale bez spacji. Zakończ również nazwę pliku za pomocą html dot (np. Filename.html). Osobiście unikam używania podkreśleń i znaków plus.

Powiązane problemy