<-
Apache > HTTP Server > Documentation > Version 2.0

картография URL к Местоположениям Файловой системы

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

top

Related Modules and Directives

top

DocumentRoot

в решении, какой файл служить для данного запроса, поведение Апача по умолчанию состоит в том, чтобы взять ДОРОЖКУ URL для запроса (часть URL после hostname и порта) и добавить это до конца DocumentRoot определенный в ваших файлах конфигурации. Поэтому, файлы и справочники под DocumentRoot составить дерево основного документа, которое будет видимо от сети.

Apache также способен к Virtual Hosting , где сервер получает запросы о больше чем одном хозяине. В этом случае, различное DocumentRoot может быть определен для каждого действительного хозяина, или альтернативно, директивы, обеспеченные модулем mod_vhost_alias может использоваться, чтобы динамически определить соответствующее место, чтобы служить содержанию, основанному на требуемом IP адресе или hostname.

top

Files Outside the DocumentRoot

есть часто обстоятельства, где необходимо позволить доступ сети к частям файловой системы, которые не строго под DocumentRoot . Apache предлагает несколько различных способов достигнуть этого. На системах Unix, символические связи могут принести другие части файловой системы под DocumentRoot . для соображений безопасности, Apache будет следовать за символическими связями только если Options урегулирование для уместного справочника включает FollowSymLinks или SymLinksIfOwnerMatch .

альтернативно, Alias директива нанесет на карту любую часть файловой системы в место сети. Например, с

Alias /docs /var/web

URL http://www.example.com/docs/dir/file.html от будет служиться /var/web/dir/file.html . ScriptAlias директива работает тот же самый путь, с дополнительным эффектом, что все содержание, расположенное в целевой дорожке рассматривают как подлинники CGI.

для ситуаций, где Вы требуете дополнительной гибкости, Вы можете использовать AliasMatch и ScriptAliasMatch директивы, чтобы сделать мощное регулярное выражение базировали соответствие и замену. Например,

ScriptAliasMatch ^/~([a-zA-Z0-9]+)/cgi-bin/(.+) /home/$1/cgi-bin/$2

нанесет на карту запрос к http://example.com/~user/cgi-bin/script.cgi к дорожке /home/user/cgi-bin/script.cgi и рассмотрит получающийся файл как подлинник CGI.

top

User Directories

традиционно на системах Unix, домашний каталог детали пользователь может упомянуться ~user/ . модуль mod_userdir расширяет эту идею сети, позволяя файлы под домашним каталогом каждого пользователя быть полученным доступ, используя URL, типа следующего.

http://www.example.com/~user/file.html

для соображений безопасности, несоответствующее дать прямой доступ к домашнему каталогу пользователя от сети. Поэтому, UserDir директива определяет директивную нижнюю часть домашний каталог пользователя, где файлы сети расположены. Используя урегулирование по умолчанию Userdir public_html , вышеупомянутый URL наносит на карту к файлу в справочнике как /home/user/public_html/file.html где /home/user/ является домашним каталогом пользователя как определено в /etc/passwd .

есть также несколько других форм Userdir директива, которую Вы можете использовать на системах где /etc/passwd не содержит местоположение домашнего каталога.

некоторые люди находят "~" символ (который часто кодируется на сети как %7e ), чтобы быть неуклюжим и предпочесть использовать дополнительную вереницу, чтобы представить пользовательские справочники. Эти функциональные возможности не поддержаны mod_userdir. Однако, если домашние каталоги пользователей структурированы регулярным способом, то возможно использовать AliasMatch директива, чтобы достигнуть желательного эффекта. Например, чтобы сделать http://www.example.com/upages/user/file.html карта к /home/user/public_html/file.html , используйте следующий AliasMatch директива:

AliasMatch ^/upages/([a-zA-Z0-9]+)/?(.*) /home/$1/public_html/$2

top

URL Redirection

директивы конфигурации, обсужденные в вышеупомянутых секциях говорят Apacheу становиться довольным от определенного места в файловой системе и возвращать это клиенту. Иногда, это желательно вместо этого сообщить клиенту, что требуемое содержание расположено в различном URL, и инструктировать клиента делать новый запрос с новым URL. Это называют переназначение и осуществлен Redirect директива. Например, если содержание справочника /foo/ под DocumentRoot перемещены в новый справочник /bar/ , Вы можете проинструктировать клиентов просить содержание в новом местоположении следующим образом:

Redirect permanent /foo/ http://www.example.com/bar/

это переадресует любую ДОРОЖКУ URL, начинающуюся в /foo/ к той же самой дорожке URL на www.example.com сервер с /bar/ замененный /foo/ . Вы можете переадресовать клиентов к любому серверу, не только сервер происхождения.

Apache также обеспечивает a RedirectMatch директива для более сложных проблем переписывания. Например, чтобы переадресовать запросы о домашней странице участка к различному участку, но оставить все другие запросы в покое, использование следующая конфигурация:

RedirectMatch permanent ^/$ http://www.example.com/startpage.html

альтернативно, чтобы временно переадресовать все страницы на одном участке к специфической странице на другом участке, используйте следующее:

RedirectMatch temp .* http://othersite.example.com/startpage.html

top

Reverse Proxy

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

в следующем примере, когда клиенты просят документы под /foo/ справочник, сервер приносит те документы от /bar/ справочник на internal.example.com и возвращает их клиенту, как будто они были от местного сервера.

ProxyPass /foo/ http://internal.example.com/bar/
ProxyPassReverse /foo/ http://internal.example.com/bar/

ProxyPass формирует сервер, чтобы принести соответствующие документы, в то время как ProxyPassReverse директива переписывает, переадресовывает возникновение в internal.example.com так, чтобы они предназначались для соответствующего справочника на местном сервере. Важно отметить, однако, что связи в документах не будут переписаны. Так любые абсолютные связи на internal.example.com приведет к клиенту, убегающему из сервера по доверенности и просящему непосредственно от internal.example.com .

top

Rewriting Engine

когда еще более мощная замена требуется, двигатель переписывания, обеспеченный mod_rewrite может быть полезным. Директивы, обеспеченные этим модулем используют особенности запроса, типа типа браузера или исходного IP адреса в решении от того, где служить содержанию. Кроме того, mod_rewrite может использовать внешние файлы базы данных или программы, чтобы решить, как обращаться с запросом. Двигатель переписывания способен к выполнению всех трех типов картографий, обсужденных выше: внутренний переадресовывает (псевдонимы), внешние переадресовывает, и proxying. Много практических примеров, использующих mod_rewrite обсуждены в URL Rewriting Guide .

top

File Not Found

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

другая общая причина "Файла Не Найденные" ошибки - случайная неверная печать URL, или непосредственно в браузере, или в связях HTML. Апач обеспечивает модуль mod_speling (так) помогать с этой проблемой. Когда этот модуль активизирован, это перехватит "Файл Не Найденные" ошибки и будет искать ресурс с подобным именем файла. Если один такой файл будет найден, то mod_speling пошлет HTTP, переадресовывают клиенту, сообщающему этому относительно правильного местоположения. Если несколько "близких" файлов будут найдены, то список доступных альтернатив будет представлен клиенту.

особенно полезная особенность mod_speling, - то, что это сравнит имена файла без уважения к случаю. Это может помочь системам, где пользователи не сознают чувствительную к случаю природу URL и файловой системы unix. Но использование mod_speling для чего-то большего чем случайного исправления URL может поместить дополнительный груз в сервер, так как каждый "неправильный" запрос сопровождается переназначением URL и новым запросом от клиента.

если все попытки определять местонахождение содержания терпят неудачу, Apache возвращает ошибочную страницу с кодексом 404 статуса HTTP (файл, не найденный). Появлением этой страницы управляют с ErrorDocument директива и может быть настроена в гибкой манере как обсуждено в Custom error responses и International Server Error Responses документы.