Mam małą witrynę obsługiwaną przez Apache (nie mogę umieścić Nginx na początku ani zmienić Apache na nic) i jest skonfigurowana do obsługi tej samej witryny zarówno przez HTTP, jak i https (nie ma przekierowań http-> https, więc daleko, więc wersje HTTP i https są obsługiwane równolegle).
Potrzebuję skonfigurować .htaccess
taki sam identyfikator URI za pośrednictwem protokołu HTTP i https, aby obsługiwał inny plik tekstowy?
Jak http://example.com/proto.txt
mówi „Witryna jest za pośrednictwem protokołu HTTP”, podczas gdy https://example.com/proto.txt
mówi „Witryna jest obsługiwana przez protokół https”.
apache-2.4
https
http
htpasswd
Kevin M.
źródło
źródło
RewriteRule
pod.htaccess
warunkiem, że jest obsługiwany przez https.<VirtualHost>
s. Musisz więc po prostu skonfigurować inny plik robots.txt w jednym z nich. Wokół:RewriteRule ^/robots.txt$ /path/to/alternative/robots.txt [L]
Odpowiedzi:
Użyj aliasu
Utwórz dwa pliki, robots.txt i robots_http.txt i dodaj to do http VirtualHost:
źródło
Jeśli nie możesz lub nie chcesz zmienić „głównej” konfiguracji Apache, ale musisz to zrobić w
.htaccess
pliku, możesz użyćRewriteRule
narzędzia,RewriteCond
które sprawdza HTTPS.Coś w stylu:
powinno prawdopodobnie działać (nie testowałem tego).
Zauważ, że jest to oparte na tym, że Apache robi samo zakończenie HTTPS. Jeśli zakończenie HTTPS odbywa się na odwrotnym proxy przed nim, wówczas warunek będzie prawdopodobnie inny (i będzie zależał od konfiguracji zwrotnego proxy i Apache).
źródło