wake-up-neo.net

Verwenden Sie eine andere Domain für SSL

long Time Lurker - das erste Mal Poster.

Ein Kunde von mir hat eine in CakePHP entwickelte Website und ein WordPress-Blog im Verzeichnis/blog/installiert.

Angenommen, die URL der Hauptdomain lautet http://www.realdomain.com, wobei der Blog http://www.realdomain.com/blog/ lautet.

Sie haben kein eigenes SSL-Zertifikat und verwenden daher meine Unternehmen. Angenommen, die sichere URL lautet https://realdomain.maindomain.net/blog/

Ich habe den folgenden Code in meiner wp-config.php-Datei:

define('WP_SITEURL', 'https://realdomain.maindomain.net/blog');
define('WP_CONTENT_URL', 'http://www.realdomain.com/blog/wp-content');
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

Wenn ich zur Datei /wp-login.php gehe, werde ich zur sicheren URL weitergeleitet, die perfekt ist.

Wenn ich mich jedoch bei der sicheren Site anmelde, versucht WordPress, JavaScripts und Stile von zu laden

`http**s**://realdomain.com`

Dies führt zu Problemen, da die Hauptwebsite kein SSL-Zertifikat hat und daher nichts von https://realdomain.com lädt.

Fehlt mir noch etwas?

Ist die Lösung eine .htaccess-Regel? Eine Regel, die alle "https://realdomain.com" an "https://realdomain.maindomain.com "weiterleitet?

Ich bezahle jedem 20 Dollar, der mir helfen kann, das Problem zu beheben. Ich habe bis zu meinem Herzen mit Google gearbeitet und weiß nicht, was ich sonst noch tun kann.

Vielen Dank!

7
Kingsley

Um die Dinge schön und klar zu halten, habe ich dies als neue Antwort gepostet. Lassen Sie uns das Spielfeld zurücksetzen und die folgenden Anweisungen befolgen, als wäre es eine glänzende Neuinstallation (ignorieren Sie alle Codes und Vorschläge in den vorherigen Antworten).

In deinem wp-config.php

define( 'WP_SITEURL', 'http://www.realdomain.com/blog' );
define( 'SSL_DOMAIN_ALIAS', 'realdomain.maindomain.net' );

define( 'FORCE_SSL_LOGIN', true );
define( 'FORCE_SSL_ADMIN', true );

Und in wp-content/mu-plugins/ssl-domain-alias.php

<?php

/**
 * Plugin Name: SSL Domain Alias
 * Plugin URI: http://wordpress.stackexchange.com/questions/38902
 * Description: Use a different domain for serving your website over SSL, set with <code>SSL_DOMAIN_ALIAS</code> in your <code>wp-config.php</code>.
 * Author: TheDeadMedic
 * Author URI: http://wordpress.stackexchange.com/users/1685/thedeadmedic
 *
 * @package SSL_Domain_Alias
 */

/**
 * Swap out the current site domain with {@see SSL_DOMAIN_ALIAS} if the
 * protocol is HTTPS.
 *
 * This function is not bulletproof, and expects both {@see WP_SITEURL} and
 * {@see SSL_DOMAIN_ALIAS} to be defined.
 *
 * @todo The replacement is a simple string replacement (for speed). If the
 * domain name is matching other parts of the URL other than the Host, we'll
 * need to switch to a more rigid regex.
 *
 * @param string $url
 * @return string
 */
function _use_ssl_domain_alias_for_https( $url )
{
    static $domain;
    if ( ! isset( $domain ) )
        $domain = defined( 'WP_SITEURL' ) && defined( 'SSL_DOMAIN_ALIAS' ) ? parse_url( WP_SITEURL, PHP_URL_Host ) : false;

    if ( $domain && strpos( $url, 'https' ) === 0 )
        $url = str_replace( $domain, SSL_DOMAIN_ALIAS, $url );

    return $url;
}
add_filter( 'plugins_url', '_use_ssl_domain_alias_for_https', 1 );
add_filter( 'content_url', '_use_ssl_domain_alias_for_https', 1 );
add_filter( 'site_url', '_use_ssl_domain_alias_for_https', 1 );

?>

Ich habe die Verwendung eines Must-Use-Plugins ( mu - Plugins) vorgeschlagen, da diese automatisch geladen werden, ohne dass sie zuvor aktiviert werden müssen.

Wenn Sie es als Standard-Plugin bevorzugen, müssen Sie die FORCE_SSL_*-Konstanten after activation hinzufügen.

10
TheDeadMedic

Ich schlug meinen Kopf gegen die Wand und versuchte, die Admin-Funktionen von WordPress auf einen separaten Server zu übertragen. Ich dachte, ich füge nur hinzu, dass zwei Host-Namen die "Vorschau" -Funktion im Editor beeinträchtigen. Sie müssen also Ihre .htaccess-Datei ändern, damit das wieder funktioniert.

#special fixes on previews when wordpress sends user to the public blog & we want the hidden one.
RewriteCond %{HTTP_Host} ^public.site.com$ [NC]
RewriteCond %{QUERY_STRING} .*(/?preview=true.*) [OR]
RewriteCond %{QUERY_STRING} (.*&preview=true.*) [NC]
RewriteRule ^(.*)$ http://secure.site.com/$1$2  [L,R=301]
3
Eric Oberle

WordPress erzwingt HTTPS für alle Assets, wenn das aktuelle Protokoll SSL ist. Ich gehe davon aus, dass realdomain.maindomain.net ein Alias ​​für realdomain.com ist.

Wenn ja, setzen Sie Ihre Inhalts-URL auf http://realdomain.maindomain.net/blog/wp-content.

Alle Assets werden über diese URL bereitgestellt und bei Bedarf automatisch in HTTPS umgeschrieben.

Wenn Sie (aus welchem ​​Grund auch immer) nur Inhalte aus der Alias-Domain innerhalb des Administrators (d. H. Über HTTPS) bereitstellen möchten, können Sie die Inhalts-URL unter folgenden Bedingungen ändern:

define( 'WP_CONTENT_URL', 'http://www.realdomain.com/blog/wp-content' );

function use_alias_for_ssl( $url )
{
    if ( is_ssl() )
        $url = str_replace( 'www.realdomain.com', 'realdomain.maindomain.net', $url );
    return $url;
}
add_filter( 'content_url', 'use_alias_for_ssl' );
add_filter( 'plugins_url', 'use_alias_for_ssl' );

UPDATE: Versuchen Sie dies, ohne einen der vorherigen Filter oder zusätzliche Definitionen;

/* wp-config.php */
define( 'WP_SITEURL', 'https://realdomain.maindomain.net/blog' );
define( 'FORCE_SSL_LOGIN', true );
define( 'FORCE_SSL_ADMIN', true );

/* wp-content/mu-plugins/any-filename.php */
add_filter( 'blog_option_siteurl', '_config_wp_siteurl' );
0
TheDeadMedic

So aktivieren Sie den Administratorzugriff für http://blog.example.com through https://ssl.example.com/wp-admins/blog/wp-login.php mit reiner Apache-Konfiguration Habe keine Abhängigkeit von Wordpress-Plugins und -Updates, die du vielleicht möchtest ...

... verwenden Sie mod_proxy auf einem virtuellen HTTPS-Apache-Host, um den Datenverkehr weiterzuleiten. Stellen Sie sicher, dass ProxyPreserveHost deaktiviert ist, damit die Hostnamen in den Proxy-Anweisungen an den WordPress-Server gesendet werden. Dann wird mod_substitute verwendet (stellen Sie sicher, dass es eingeschaltet ist), um die defekten Links zu reparieren, die von WordPress zurückkommen.

<Location /wp-admins/blog/>

  AddOutputFilterByType SUBSTITUTE text/html
  AddOutputFilterByType SUBSTITUTE text/css
  AddOutputFilterByType SUBSTITUTE application/javascript
  AddOutputFilterByType SUBSTITUTE application/json
  Substitute "s|http://blog.example.com|https://ssl.example.com/wp-admins/blog|i"
  Substitute "s|blog.example.com\\\/|blog.example.com\\/wp-admins\\/blog\\/|i"
  Substitute "s|'/wp-admin|'/wp-admins/blog/wp-admin|i"
  Substitute "s|\"/wp-admin|\"/wp-admins/blog/wp-admin|i"
  Substitute "s|'/wp-includes|'/wp-admins/blog/wp-includes|i"
  ProxyPassReverseCookiePath / /wp-admins/blog/

</Location>

ProxyPass /wp-admins/blog/ http://blog.example.com/
ProxyPassReverse /wp-admins/blog/ http://blog.example.com/

Damit der Reverse-Proxy funktioniert, müssen Sie die interne IP-Adresse des Servers angeben, auf dem blog.example.com gehostet wird. Diese Lösung stellt sicher, dass dies auch dann funktioniert, wenn der Upstream-Server (10.0.0.4) über mehrere namensbasierte virtuelle Hosts verfügt.

10.0.0.4 blog.example.com

Weitere Einzelheiten finden Sie unter:

http://tec.libertar.se/how-to-Host-wordpress-admin-on-a-seperate-domain-and-subfolder/

0
Kristofer

Ich habe die Datei wp-config.php aktualisiert und WordPress MU ist nicht installiert. Deshalb habe ich den Ordner mu-plugins im Ordner/wp-content/erstellt. Ein paar Dinge sind passiert: Beim Anzeigen der öffentlichen Seite wurden bestimmte Dateien aus https://realdomain.maindomain.net/blog und einige aus http://realdomain.com geladen. So was:

<script src="http://www.realdomain.com/blog/wp-content/plugins/commentluv/js/commentluv.js?ver=3.2.1" type="text/javascript">

<link href="https://realdomain.maindomain.net/blog/xmlrpc.php?rsd" title="RSD" type="application/rsd+xml" rel="EditURI">

<link href="https://realdomain.maindomain.net/blog/wp-includes/wlwmanifest.xml" type="application/wlwmanifest+xml" rel="wlwmanifest">

URLs und Miniaturansichten von Blogposts wurden jedoch ordnungsgemäß verknüpft. Es waren nur 4 Dateien, die von der https: // Site abgerufen wurden

Auf der wp-Login-Seite war die Formular-URL korrekt, https: // und es wurde die sichere Site geladen. Jedoch habe ich nichts geändert. Es werden immer noch 7 <script>- und <link>-Dateien von https://realdomain.com abgerufen.

Die URLs aller <forms> all POST zur richtigen https: // Site.

Vielen Dank für all Ihre Hilfe, ich weiß das sehr zu schätzen!

0
Kingsley