Как CMS показывает страницы в каталогах или в простых именах файлов? - PullRequest
0 голосов
/ 11 января 2009

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

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

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

Ответы [ 5 ]

6 голосов
/ 11 января 2009

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

2 голосов
/ 11 января 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 .

1 голос
/ 11 января 2009

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

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

1 голос
/ 11 января 2009

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

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

1 голос
/ 11 января 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...