Я действительно не заметил этот Redirect (301), когда запрашивал такой URL без слеша ("/") в конце: http://server/directory
Сервер будет связан с заголовком 301 Redirect Permanent с заголовком Location, расположенным по адресу http://server/directory/
.
Смотрите этот живой пример:
Запрос пользователя:
GET /social HTTP/1.1
( http://192.168.1.111/social )
Ответ сервера Apache:
HTTP/1.1 301 Moved Permanently
Location: http://192.168.1.111/social/
Запрос пользователя:
GET /social/ HTTP/1.1
( http://192.168.1.111/social/ )
Ответ сервера Apache:
HTTP/1.1 200 OK
Apache access.log:
192.168.1.130 - - [05/Apr/2014:22:06:47 +0200] "GET /social HTTP/1.1" 301 558 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"
-
192.168.1.130 - - [05/Apr/2014:22:06:47 +0200] "GET /social/ HTTP/1.1" 200 942 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"
Каталог / social / содержит index.html
файл.
Программное обеспечение Apache: Apache/2.2.22 (Ubuntu)
Параметры каталога:Options Indexes FollowSymLinks MultiViews
Итак, мой вопрос: почему Apache делает это? А как предотвратить перенаправление и отправить index.html
напрямую? Клиенты должны отправить два запроса, которые действительно не нужны. И, возможно, некоторые клиенты не разрешают перенаправления и не смогут перейти на сайт без косой черты («/»).
Я не хочу отключать перенаправление. Я не хочу, чтобы сервер отправлял ответ напрямую без перенаправления. Даже при запросе /social
.
Apache предназначен для перенаправления этих запросов? Сервер может просто отправлять данные без перенаправления, верно? Должен ли я использовать, mod_rewrite
чтобы предотвратить это? Или другая конфигурация? Или я должен просто позволить этому быть таким и добавить косую черту в конце всех ссылок HTML и жить с некоторыми перенаправлениями?
Что, вы парни, думаете?
index.html
/social
. (Кроме того, как правило, нежелательно показывать один и тот же контент по нескольким URL-адресам.)
/social
в вашем примере.