Лучше ли добавлять расширение файла к значению href? - PullRequest
1 голос
/ 07 сентября 2010

Если у меня есть очень простой каталог http:

default.html
info.html
contact.html
etc...

Должен ли default.html ссылаться на другие файлы в каталоге, я 'Мы всегда могли просто использовать тег привязки:

<a href="contact" target="_self">Contact me!</a>

Будет ли это работать всегда, если в каталоге есть только один файл с именем, соответствующим этому расширению безhref значение?

Ответы [ 3 ]

3 голосов
/ 07 сентября 2010

Это зависит от сервера и от того, как он настроен.

Помните, что нет никакого врожденного отображения между URI и файлами на веб-сервере, веб-сервер всегда следует некоторому правилу относительно того, какой файлОтправить.Простейший берет часть пути URI и выполняет прямое отображение на путь к файлу, локальный для веб-сервера, но он может делать что-то еще.Распространенным случаем является использование расширения файла для продолжения, поэтому, если у вас есть contact.html, contact.atom и т. Д. В одном и том же локальном каталоге, соответствующем пути, он выбирает ближайший к заголовку Accept пользовательскийagent.

Размещение расширений файлов (будь то "статических" файлов или обработчиков, таких как .php, .aspx и т. д.) в URI довольно бессмысленно, поскольку в Интернете нет такой вещи, как файл (естьфайлы на сервере, и клиент может сохранить поток в файл, но в самой сети существуют потоки октетов, которые могут соответствовать или не соответствовать файлу).И не идеал;предположительно contact.html имеет отношение к контактным данным, в то время как «contact» хорошо выражает эту идею, «.html» не имеет ничего общего с контактными данными и не относится к ним.

Следовательно, более разумный URIв нем не было бы «.html», если только это не было каким-то образом выражением чего-то полезного (например, явный запрос версии HTML и обход согласования содержимого или если страница фактически была о HTML).

С другой стороны, простое сопоставление с именами файлов - это быстрый и простой способ сделать что-то, поэтому, хотя я, конечно, нахмурился на такое произвольное искажение в URI, я не буду прыгать через слишком много обручей, чтобы не использовать его, особенно во вторичных URI.используется для таблиц стилей, изображений и т. д., а не для тех, которые, как ожидается, будут регулярно появляться в адресной строке браузера.

С третьей стороны, когда вы удаляете такую ​​ошибку, добавление более сложной обработки позже, если требуется, становитсягораздо более легкий переход.

2 голосов
/ 07 сентября 2010

В Apache2 есть функция согласования контента, которая делает это, но лично я не хочу на это полагаться.

Если мне нужны красивые URL-адреса, я бы лучше использовал mod_rewrite и реализовал полностью настраиваемый URL-адрес.Схема, которую было бы легко изменить и настроить без ограничений.

http://httpd.apache.org/docs/2.0/content-negotiation.html

1 голос
/ 07 сентября 2010

Нет, он автоматически не добавляет .html, так как он не мог знать, какое расширение файла использовать.Допустим, у вас есть contact.html и contact.php.Какой из них он должен использовать.

Однако вы можете сделать все это, используя правила перезаписи (например, в файле .htaccess).Просто найдите несколько примеров здесь в SO или в Интернете.

...