Используйте другой домен для SSL

долговременный наблюдатель - в первый раз плакат.

Моему клиенту разработали веб-сайт в CakePHP и блоге Wordpress, установленном в/blog/каталоге.

Скажем, URL основного домена http://www.realdomain.com, с блогом тем, чтобы быть http://www.realdomain.com/blog/.

У них нет своего собственного сертификата SSL, таким образом, они используют мои компании. Скажем, безопасный URL https://realdomain.maindomain.net/blog/

У меня есть следующий код в моем wp-config.php файле:

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);

Когда я перехожу в/wp-login.php, это перенаправляет меня к безопасному URL, который прекрасен.

Однако, когда я вхожу в систему безопасного сайта, WordPress пробует к загрузкам JavaScripts и разрабатывает от

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

Который вызывает проблемы, потому что основной сайт не имеет сертификата SSL и в результате ничего не загружается от https://realdomain.com

Есть ли что-либо еще, что я пропускаю?

Действительно ли решением является правило .htaccess? Правило, которое направило все"https://realdomain.com"https://realdomain.maindomain.com"?

Я заплачу любому 20$, кто может помочь мне зафиксировать его. У меня есть Google'd до моего содержания основ, и я не знаю то, что еще я могу сделать.

Большое спасибо!

7
17.01.2012, 16:19
4 ответа

Только для хранения вещей хорошими и ясными я отправил это как новый ответ. Давайте сбросим игровую площадку и давайте следовать ниже инструкций, как будто это была новейшая установка (проигнорируйте весь код и предложения в предыдущих ответах).

В Вашем 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 );

И в 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 );

?>

Я предложил использовать плагин Должен-использования (mu-плагины), так как они автоматически загружаются, не имея необходимость активироваться сначала.

Если Вы быть он быть стандартным плагином, то необходимо будет добавить FORCE_SSL_* константы после активации.

10
19.02.2020, 22:03
  • 1
    Хороший ответ. Я не могу получить эту работу с Wordpress 3.3.2 и этим два домена: myblog.tld && ssl.company.tld/myblog.tld. У Вас есть какие-либо предложения? –  tonymarschall 21.04.2012, 21:43
  • 2
    я могу подтвердить, что это решение все еще работает над Wordpress 3.5.1.Спасибо. –  Jeff Strunk 17.05.2013, 19:10
  • 3
    я могу подтвердить также, что это решение все еще работает над Wordpress 4.2.3 –  Rodrigo 03.08.2015, 14:31

WordPress вызовет HTTPS для всех активов, если текущим протоколом будет SSL. Я принимаю realdomain.maindomain.net псевдоним для realdomain.com?

Если так, установите свой URL содержания на http://realdomain.maindomain.net/blog/wp-content.

Все активы будут поданы от этого URL и автоматически переписаны к HTTPS при необходимости.

Если (по любой причине) Вы только когда-либо хотите служить содержанию от искаженного домена в администраторе (т.е. через HTTPS), можно изменить URL содержания условно:

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' );

ОБНОВЛЕНИЕ: Попробуйте это, без любого из предыдущих фильтров или дополнительный определяет;

/* 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
19.02.2020, 22:03

Я обновил wp-config.php и WordPress, MU не установлен, таким образом, я создал папку mu-плагинов в/wp-content/папка. Несколько вещей произошли: При просмотре общедоступной стороны это загрузило определенные файлы из https://realdomain.maindomain.net/blog и некоторые от http://realdomain.com. Как это:

<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">

Однако URL сообщения в блоге и миниатюры связывались правильно. Это были всего 4 файла, которые были получены от https://сайт

На wp-странице-входа-в-систему URL формы был корректен, https://, и это загрузило безопасный сайт.. Однако я ничего не изменил. Это все еще вытягивает в 7 <script> & <link> файлы от https://realdomain.com.

URL на весь <forms> весь POST к корректному https://сайт..

Спасибо за всю Вашу справку до сих пор, я действительно ценю его!

0
19.02.2020, 22:03

Я ударил головой о стену, пытающуюся перемещать функции администрирования в Wordpress к отдельному серверу. Я думал, что просто добавлю к нему, что наличие двух имен хостов действительно повреждает функцию "предварительного просмотра" в редакторе, и таким образом, необходимо изменить .htaccess для создания той работы снова.

#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
19.02.2020, 22:03