Làm cách nào để phục vụ các tệp robots.txt khác nhau cho http và https trên cùng một trang?


11

Tôi có một trang web nhỏ do Apache phục vụ (Tôi không thể đặt Nginx ở phía trước cũng như không thay đổi Apache thành bất cứ thứ gì) và nó được thiết lập để phục vụ cùng một trang web trên cả http và https (không có chuyển hướng http-> https nào ở đó cho đến nay, cả hai phiên bản http và https được phục vụ song song).

Điều tôi cần là thiết lập .htaccesscùng một URI qua http và qua https để phục vụ các tệp văn bản khác nhau?

Giống như http://example.com/proto.txtnói "Trang web đã qua http" trong khi https://example.com/proto.txtsẽ nói "Trang web được phân phối qua https".


Bạn không có thời gian để kiểm tra chính xác cách viết này (và vì vậy chỉ là một nhận xét, không phải là một câu trả lời), nhưng một tùy chọn khác nếu bạn không muốn hoặc không thể thay đổi cấu hình chính của Apache, là sử dụng một RewriteRuletrong bạn .htaccessvới một điều kiện về nó được phục vụ qua https.
jcaron

@dcaron, đây chính xác là tôi cần, tôi chỉ không thể tìm ra cách thực hiện chính xác và cần một lời khuyên hoặc (tốt hơn) đoạn mã để làm điều đó :)
Kevin M

Các trang web http và https của bạn ở các <VirtualHost>s khác nhau . Vì vậy, bạn chỉ cần cấu hình một tệp robots.txt khác nhau trong một trong số chúng. Khoảng như vậy:RewriteRule ^/robots.txt$ /path/to/alternative/robots.txt [L]
peterh - Phục hồi Monica

Câu trả lời:


19

Sử dụng bí danh

Tạo hai tệp, robot.txt và robot_http.txt và thêm tệp này vào http Virtualhost của bạn:

Alias "/robots.txt" "/path/to/documentroot/robots_http.txt"

Không thể sửa đổi cài đặt vhost, chỉ có thể chỉnh sửa .htaccess, đây là mẹo.
Kevin M

2

Nếu bạn không thể hoặc sẽ không thay đổi cấu hình Apache "chính" nhưng cần thực hiện nó trong một .htaccesstệp, bạn có thể sử dụng một RewriteRulecái RewriteCondđể kiểm tra HTTPS.

Một cái gì đó dọc theo dòng:

RewriteEngine On

RewriteCond %{HTTPS} "on"
RewriteRule robots.txt robots_https.txt [L]

có lẽ nên hoạt động (tôi đã không kiểm tra nó).

Lưu ý rằng điều này dựa trên việc Apache tự chấm dứt HTTPS. Nếu việc chấm dứt HTTPS được thực hiện trên một proxy ngược trước nó, thì điều kiện có thể sẽ khác (và sẽ phụ thuộc vào cấu hình của proxy ngược và Apache).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.