Avatar billede tudekoen Nybegynder
18. april 2004 - 12:28 Der er 15 kommentarer og
1 løsning

https til http og omvendt med en RewriteRule

Jeg har prøvet:

RewriteEngine On
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^/.*$ http://%{SERVER_NAME}%{REQUEST_URI} [R,L]

For at rewrite https til http.
Der er en condition - hvis SERVER_PORT er 443 (https porten), så skal følgende rewrite rule eksekveres...
Men det virker ikke.

Nogle ideer?
Avatar billede htm Nybegynder
18. april 2004 - 13:00 #1
Din ville muligvis virke fint hvis du havde slået ca UseCanonicalName til Off i din httpd.conf. Prøv denne:

RewriteEngine On
RewriteCond %{SERVER_PROTOCOL}    ^HTTPS
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R]

Hvis UseCanonicalName er slået til, vil SERVER_NAME og SERVER_PORT blive taget fra konfigurationen af apache, og ikke det brugeren submitter.
Avatar billede tudekoen Nybegynder
18. april 2004 - 13:10 #2
Doh! Det står jo klokkeklart i httpd.conf !
Udover det, så virker det heller ikke med ovenstående. Er SERVER_PROTOCOL = HTTPS?
Avatar billede htm Nybegynder
18. april 2004 - 13:17 #3
Jeg ved ikke hvad SERVER_PROTOCOL er men den burde næsten starte med HTTPS - alm http-request starter med HTTP. men lav en phpinfo() og kig i den på en side du har requestet med https og se hvad SERVER_PROTOCOL står til.

forøvrigt min giver ingen mening... tjekker for https og sender videre til https :o)

RewriteEngine On
RewriteCond %{SERVER_PROTOCOL}    ^HTTPS
RewriteRule (.*) http://%{HTTP_HOST}/$1 [R]

Forøvrigt har du tjekket din mens UseCanonicalName er off ?
Avatar billede tudekoen Nybegynder
18. april 2004 - 13:20 #4
havde set fejlen, med https i RewriteRule...

UseCanonicalName er default on.

Jeg tjekker lige i php_info...
Avatar billede tudekoen Nybegynder
18. april 2004 - 13:24 #5
Selvom man bruger https:// så er SERVER_PROTOCOL åbentbart altid "HTTP/1.1"
Avatar billede htm Nybegynder
18. april 2004 - 13:32 #6
ok har du testet med din efter UseCanonicalName er slået fra ?

RewriteEngine On
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R]

evt. tjek i phpinfo.php hvad SERVER_PORT står til.

Jeg har ikke mulighed for at teste med https, men denne vej virker det fint. (kan se den redirecter til https.
Avatar billede tudekoen Nybegynder
18. april 2004 - 14:11 #7
Jeg kan ikke få

RewriteEngine On
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^/.*$ http://%{SERVER_NAME}%{REQUEST_URI} [R,L]

til at virke, selvom UseCanonicalName er slået fra ...
Avatar billede htm Nybegynder
18. april 2004 - 14:18 #8
Prøv og fjern din slash foran. og fjern din L den er ikke nødvendig når du ikke har mere end en rewrite. og prøv og lav den om til != port 80

sådan:

RewriteEngine On
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} [R]
Avatar billede tudekoen Nybegynder
18. april 2004 - 14:22 #9
Det virker heller ikke. Jeg har godt nok heller ikke kunne finde noget på google om det.
Avatar billede htm Nybegynder
18. april 2004 - 14:31 #10
jo jo google er meget informativ... http://www.google.dk/search?hl=da&ie=UTF-8&oe=UTF-8&q=redirect+http+to+https&btnG=S%C3%B8g&meta=

Men løsningerne der er

1. Din metode
2. almindelige html-redirect
3. apaches redirect
  redirect / https://domain.dk

2 og 3 kræver at du har en vhost for http og en for https - har du det, kan du bruge en af dem! Ellers må jeg være dig svar skyldig hvad der skal til. Den sætning er i brug andre steder kan jeg se :o)

Du har self genstartet apache efter ændringer i httpd.conf ?
Avatar billede tudekoen Nybegynder
18. april 2004 - 15:59 #11
Jeg har genstartet apache, men jeg må vist rode lidt videre med det... og poster en løsning, hvis der kommer en.
Tak for hjælpen indtil nu.
Avatar billede tudekoen Nybegynder
18. april 2004 - 20:50 #12
Jeg tror nu, at jeg har fundet en brugbar løsning.

Jeg har placeret følgende på den virtual host, som kører SSL - i mit tilfælde sub.domain.dk:

RewriteCond %{HTTP_HOST} !^sub.domain.dk$
RewriteRule ^.*$ http://domain.dk/index.php?id=X [R,L]

Af en eller anden grund vil de virtual hosts https://domain2.dk, https://domain3.dk osv. altid svare på https://sub.domain.dk, da det er den eneste der kører port 443.

Så hvis en anden virtual host end sub.domain.dk vil køre SSL skal det f.eks. ske gennem sub.domain.dk/domain3.dk/ (med et symlink)

Man kunne måske også ændre port fra 443 til en anden, men jeg venter lidt og ser om ikke det her virker fint nok.
Avatar billede tudekoen Nybegynder
18. april 2004 - 20:51 #13
Kommentarer til "løsningen" er mere end velkommen. Det kan være jeg har overset el. misforstået noget.
Avatar billede htm Nybegynder
18. april 2004 - 20:56 #14
Hvis den virker er den i orden, der er ikke så meget i den rewrite der :o)

Men jeg forstår vist ikke helt hvad det er du har lavet.
Avatar billede tudekoen Nybegynder
18. april 2004 - 21:03 #15
Læs det arne_v har skrevet i http://www.eksperten.dk/spm/490181 ... så kan det være det hjælper på forståelsen.
Avatar billede tudekoen Nybegynder
20. oktober 2004 - 16:17 #16
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester