Re: Wordpress hinter einem Proxy, Aendern von HTTP auf HTTPS

Peter Ross <[email protected]> Fri, 29 Dec 2017 14:52:13 +1100 (AEDT)
Newsgroups gmane.os.freebsd.questions.german
Message-ID <alpine.DEB.2.20.1712291024450.2852@petros-Latitude-E5520>
Hi olli,

Danke fuer den Tip.

On Thu, 28 Dec 2017, Oliver Fromme wrote:

> Hi Peter,
>
> Peter Ross wrote:
> > [...]
> > Auf dem Jail, in dem Wordpress laeuft (unter Port 80, unverschluesselt),
> > habe ich in die wp-config.php
> >
> > define('WP_HOME','https://test.journal1.com.au');
> > define('WP_SITEURL','https://test.journal1.com.au');
>
> Evtl. brauchst Du auch:
> $_SERVER['HTTPS'] = 'on';

Genau. Zusammengefasst alles, was ich machen muss, noch mal unten.

Dann geht es auch ohne die beiden anderen Eintraege, WP_HOME 
und WP_SITEURL sind nicht noetig.

Hier, was ich zur Erklaerung dazu gefunden habe: die is_ssl Funktion 
funktioniert nicht, wenn man auf dem Server HTTP verwendet, davor aber ein 
Reverse Proxy liegt, der via HTTPS angesprochen wird.

----
https://codex.wordpress.org/Function_Reference/is_ssl

NB: this won't work for websites behind some load balancers, especially 
Network Solutions hosted websites. To bodgy up a fix, save this gist into 
the plugins folder and enable it. For details, read WordPress is_ssl() 
doesnΒ’t work behind some load balancers.

Websites behind load balancers or reverse proxies that support 
HTTP_X_FORWARDED_PROTO can be fixed by adding the following code to the 
wp-config.php file, above the require_once call:

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && 
$_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
     $_SERVER['HTTPS'] = 'on';
----

Nun, da diese "Langversion" nicht funktioniert, nehme ich an, dass der 
Proxy (Apache 2.4 + mod_proxy) die Variable 
$_SERVER['HTTP_X_FORWARDED_PROTO'] nicht kennt.

Also, zusammengefasst:

$_SERVER['HTTPS'] = 'on' in wp-config.php

und URLs hier in der Datenbank:

UPDATE wp_options SET option_value = replace(option_value, 
'http://test.journal1.com.au', 'https://test.journal1.com.au') WHERE 
option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 
'http://test.journal1.com.au','https://test.journal1.com.au');

UPDATE wp_posts SET post_content = replace(post_content, 
'http://test.journal1.com.au', 'https://test.journal1.com.au');

UPDATE wp_postmeta SET meta_value = 
replace(meta_value,'http://test.journal1.com.au','https://test.journal1.com.au');

Dankeschoen
Peter