Tôi thực sự không nhận thấy Chuyển hướng này (301) khi yêu cầu một url như thế này mà không gạch chéo ("/") ở cuối: http://server/directory
Máy chủ sẽ hoạt động với tiêu đề Thường trực chuyển hướng 301 với tiêu đề Vị trí được định vị http://server/directory/
.
Xem ví dụ trực tiếp này:
Yêu cầu người dùng:
GET /social HTTP/1.1
( http://192.168.1.111/social )
Máy chủ Apache bị từ chối:
HTTP/1.1 301 Moved Permanently
Location: http://192.168.1.111/social/
Yêu cầu người dùng:
GET /social/ HTTP/1.1
( http://192.168.1.111/social/ )
Máy chủ Apache bị từ chối:
HTTP/1.1 200 OK
Truy cập Apache.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"
Thư mục / social / chứa một index.html
tập tin.
Phần mềm Apache: Apache/2.2.22 (Ubuntu)
Tùy chọn thư mục:Options Indexes FollowSymLinks MultiViews
Vì vậy, câu hỏi của tôi là: Tại sao apache làm điều này? Và làm thế nào để ngăn chặn chuyển hướng và gửi index.html
trực tiếp? Khách hàng phải gửi hai yêu cầu thực sự không cần thiết. Và có thể một số khách hàng không cho phép Chuyển hướng và sẽ không thể truy cập trang web mà không có dấu gạch chéo ("/").
Tôi không muốn tắt chuyển hướng. Tôi sẽ không gửi máy chủ để gửi phản hồi trực tiếp mà không có bất kỳ chuyển hướng nào. Ngay cả khi yêu cầu /social
.
Là apache được thiết kế để chuyển hướng những yêu cầu đó? Máy chủ chỉ có thể gửi dữ liệu mà không cần chuyển hướng, phải không? Tôi có nên sử dụng mod_rewrite
để ngăn chặn điều này? Hoặc cấu hình khác? Hoặc tôi chỉ nên để nó như thế này và thêm một dấu gạch chéo ở cuối tất cả các liên kết html và sống với một số chuyển hướng?
các bạn nghĩ sao?
index.html
mà không cần chuyển hướng
/social
. (Ngoài ra, nói chung, việc phục vụ cùng một nội dung ở nhiều url thường không được mong muốn.)
/social
trong ví dụ của bạn.