Redirecționarea unei cereri HTTPS către HTTP în Apache (Webmasteri, Apache, Http, Https)

Santhosh S a intrebat.

Poate fi redirecționată o cerere HTTPS către o cerere HTTP în Apache? Dacă da, cum?

2 răspunsuri
David Yell

Da, se poate, și veți dori să utilizați un fișier Apache htaccess pentru a rescrie cererea. Va trebui să fie configurat în configurația VHost dacă folosiți unul, astfel încât să se potrivească pe port, deoarece Apache nu știe ce este https în htaccess.

RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

Acest lucru ar trebui să redirecționeze orice lucru care sosește pe https către pagina corespunzătoare de pe http

Oh, da, ar trebui să menționez că acest lucru va trebui să fie în fișierul dvs. .htaccess în rădăcina site-ului dvs. web sau în folderul pe care doriți să îl redirecționați. De asemenea, va trebui să vă asigurați că în fișierul dvs. httpd.conf sau vhost.conf (în funcție de configurație) că aveți AllowOverride configurat, altfel htaccess-ul dvs. nu va fi citit.

Comentarii

  • Ar putea fi mai bine să vă bazați pe %{HTTPS} variabila în loc de un număr de port specific .. deoarece puteți pune serviciul HTTPS pe ORICE port (depinde de starea reală a serverului/configurația/cerințele dvs.) — 443 este doar un port implicit, deci va trebui să editați această regulă pentru a o face să funcționeze din nou dacă este rulată pe un astfel de port non-standard. O astfel de condiție alternativă va fi RewriteCond %{HTTPS} =on [NC] –  > Por LazyOne.
  • Ah, da, într-adevăr. Ca în toate lucrurile, există mai multe moduri de a ajunge la același obiectiv 🙂 –  > Por David Yell.
  • Doar pentru a clarifica, pentru a evita erorile browserului, va trebui să aveți în continuare un certificat de securitate valabil instalat pentru ca acest lucru să funcționeze, deoarece are loc handshake-ul HTTPS înainte de .htaccess să aibă șansa de a lucra la el. –  > Por MrWhite.
VIKAS PANDEY

Pentru a redirecționa cererea HTTPS către HTTP în serverul Apache, am adăugat codul în fișierul .htaccess. Acest cod funcționează bine. https://www.example.com/ este 301 Moved Permanently to http://www.example.com/ cu un răspuns 200 OK.

RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

Comentarii

  • Acest cod arată identic cu codul deja propus în celălalt răspuns. Ai avut ceva nou de adăugat sau doar confirmi că a funcționat pentru tine? –  > Por Stephen Ostermiller.
  • @StephenOstermiller – frumoasă formatare, nu mi-am dat seama ce încerca să posteze 😛 -.  > Por Steve.