Bagaimana cara menyajikan robots.txt berbeda untuk http dan https di situs yang sama?

11

Saya mendapat situs kecil yang dilayani oleh Apache (saya tidak bisa menempatkan Nginx di depan atau mengubah Apache ke apa pun), dan itu diatur untuk melayani situs yang sama baik di http dan https (tidak ada pengalihan http-> https ada begitu jauh, sehingga versi http dan https disajikan secara paralel).

Yang saya butuhkan adalah mengatur .htaccessURI yang sama melalui http dan via https untuk menyajikan file teks yang berbeda?

Seperti http://example.com/proto.txtmengatakan "Situs lebih dari http" sementara https://example.com/proto.txtakan mengatakan "Situs disajikan lebih dari https".

Kevin M.
sumber
Tidak punya cukup waktu untuk memeriksa cara yang tepat untuk menulis ini (dan jadi hanya komentar, bukan jawaban), tetapi opsi lain jika Anda tidak ingin atau tidak dapat mengubah konfigurasi Apache utama, adalah menggunakan a RewriteRuledi Anda .htaccessdengan kondisi di atasnya dilayani lebih https.
jcaron
@caron, inilah tepatnya yang saya butuhkan, saya hanya tidak tahu bagaimana melakukannya dengan tepat, dan butuh saran atau cuplikan kode (yang lebih baik) untuk melakukan itu :)
Kevin M
Situs http dan https Anda ada di <VirtualHost>s berbeda . Jadi, Anda hanya perlu mengkonfigurasi robots.txt yang berbeda di salah satunya. Sekitar jadi:RewriteRule ^/robots.txt$ /path/to/alternative/robots.txt [L]
peterh

Jawaban:

19

Gunakan Alias

Buat dua file, robots.txt dan robots_http.txt dan tambahkan ini ke http VirtualHost Anda:

Alias "/robots.txt" "/path/to/documentroot/robots_http.txt"
Gerald Schneider
sumber
Tidak dapat mengubah pengaturan vhost, hanya dapat mengedit .htaccess, ini triknya.
Kevin M
2

Jika Anda tidak dapat atau tidak akan mengubah konfigurasi Apache "utama" tetapi perlu melakukannya dalam .htaccessfile, Anda dapat menggunakan RewriteRuledengan dengan RewriteCondyang memeriksa HTTPS.

Sesuatu di sepanjang garis:

RewriteEngine On

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

mungkin harus bekerja (saya tidak mengujinya).

Perhatikan bahwa ini didasarkan pada Apache yang melakukan terminasi HTTPS sendiri. Jika penghentian HTTPS dilakukan pada proxy terbalik sebelum itu, maka kondisinya kemungkinan akan berbeda (dan akan tergantung pada konfigurasi proxy reverse dan Apache).

jcaron
sumber