Как CMS показывают страницы в каталогах или в простых именах файлов?

Если все CMS (Drupal, MediaWiki) представляют собой просто набор PHP или ASP в фоновом режиме, то как они отображают страницы по адресу www.example.com/directory/ или www.example. com/имя_файла без расширений или чего-то еще?

Это какая-то конфигурация .HTACCESS? Питон? Перл? Что могло сделать это?

Как я могу сделать это для своего сервера/веб-сайтов? (без использования CMS?)


person Robin Rodricks    schedule 11.01.2009    source источник


Ответы (5)


Вы находитесь после URL Переписывание. Это позволяет веб-серверу отображать контент для URL-адресов, которые не сопоставляются напрямую ни с контентом, присутствующим в файловой системе, ни с конкретным обработчиком динамического контента (которые обычно являются двумя стандартными способами обслуживания контента).

person Vinko Vrsalovic    schedule 11.01.2009
comment
URL-адрес соответствует контенту, обслуживаемому по определению. Это то, что делают веб-серверы. - person Rob Kennedy; 11.01.2009

Веб-сервер — это всего лишь часть программного обеспечения, которое прослушивает входящий запрос, и когда он его получает, он отправляет какой-то ответ.

Традиционно серверы (например, Apache/IIS, обслуживающие обычные HTML-файлы) просматривают входящий запрос, находят соответствующий файл в своей локальной файловой системе (например, для /home/about.html они будут искать в home для файла с именем about.html) и отправьте содержимое этого файла обратно клиенту, отправившему запрос. Это быстро, легко и очень легко реализовать, но это только один из возможных способов создания веб-сервера. Большинство веб-серверов предлагают возможность переопределить это поведение и сделать что-то более разумное с входящими запросами.

Что вам нужно сделать, так это настроить сам веб-сервер (IIS, Apache, lighttpd, что угодно) для направления запросов к определенному сценарию или ресурсу.

В IIS для Windows это можно сделать двумя способами.

Во-первых, настроить функцию «Пользовательские ошибки» IIS и сопоставить страницу с ошибкой 404, скажем, /MyCms/FindPage.asp. Это означает, что каждый раз, когда клиент запрашивает страницу, которой физически нет, ваш веб-сервер будет запускать ее. Вместо этого на странице ASP, а затем внутри этой страницы вы можете извлечь исходный URL-адрес запроса (/home/info/events.html), найти его в базе данных или что-то в этом роде и вернуть его. Клиент не будет знать, что это произошло.

В качестве более мощной альтернативы вы можете использовать сопоставление приложений с подстановочными знаками, как это предлагается в сообщении olle - это будет отображать КАЖДЫЙ запрос ( а не только "не найденные") в скрипт или обработчик CMS.

person Dylan Beattie    schedule 11.01.2009

Посмотрите на директиву DirectoryIndex, чтобы изменить файл по умолчанию для отображения для каталог, если вы используете Apache.

CMS, как правило, используют переписывание URL-адресов, чтобы вместо этого получить удобные URL-адреса. необходимости иметь идентификаторы документов в URI.

person Rowland Shaw    schedule 11.01.2009

Пути без расширения — это то, что вы настраиваете на уровне веб-сервера. В IIS вы можете использовать сопоставление приложений с подстановочными знаками. В основном все запросы идут к указанному вами расширению ISAPI. В Apache вы можете использовать его предложение Роланда.

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

person olle    schedule 11.01.2009

Большинство веб-серверов имеют движки перезаписи. Они позволяют вам переписывать/перенаправлять определенные запросы внутри или снаружи на другие URL-адреса.

Для Apache существует модуль mod_rewrite или AcceptPathInfo директива, которая предлагает аналогичную функциональность.

person Gumbo    schedule 11.01.2009