Intereting Posts
Странная проблема с подсчетом запросов базы данных wp_get_attachment_image_src (db) Добавление и стиль пользовательского меню Шаблон страницы не отображает простой HTML, если он вставлен на другую страницу? Изменение автора вложений в медиа с помощью запроса mysql Можно ли добавить cpt, который можно просматривать только в backend, а не редактировать? Идеальное место для хранения постоянных объектов PHP Каждый раз, когда я деактивирую пользовательский плагин, сайт сталкивается с критической ошибкой Должен ли я использовать language_attributes () или bloginfo («язык») в теге html Удалите wp-caption, но покажите изображение изменение основного запроса на запрос для диапазонов, например, с 1999 по 2016 год изменить время публикации на нескольких сообщениях Можно добавить аватар аватара автора, чтобы он отображался для всех, а не только зарегистрированных / зарегистрированных пользователей? Удалить теги из wordpress head Как добавить / сохранить пользовательское поле в пользовательских настройках / профиле «Список флажков» Получить категорию из идентификатора продукта?

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

долгое время lurker – первый раз плакат.

У моего клиента есть веб-сайт, созданный в 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 долларов США, которые могут помочь мне исправить это. Я догадывался, что до тех пор, пока мои сердца не будут довольны, и я не знаю, что еще я могу сделать.

Спасибо!

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

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

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

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

Я ударил головой о стену, пытаясь переместить функции администратора на 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] 

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

UPDATE: попробуйте это, без каких-либо предыдущих фильтров или дополнительных определений;

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

Я обновил wp-config.php и WordPress MU не установлен, поэтому я создал папку mu-plugins в папке / 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-login URL-адрес формы был прав, https: // и он загрузил защищенный сайт. Однако я ничего не изменил. Он по-прежнему загружает 7 файлов <script> и <link> из https://realdomain.com .

URL-адреса всех <forms> всех POST на правильный https: // сайт ..

Спасибо за вашу помощь, я очень ценю это!

Чтобы включить доступ администратора для http://blog.example.com через https://ssl.example.com/wp-admins/blog/wp-login.php с чистой конфигурацией Apache, чтобы вы не зависели от плагинов и обновлений WordPress вы можете захотеть …

… используйте mod_proxy на виртуальном хосте HTTPS apache для пересылки трафика, убедитесь, что ProxyPreserveHost отключен, так что имена хостов в прокси-заявлениях отправляются на сервер wordpress. Затем используется mod_substitute (обязательно включите его), чтобы исправить неработающие ссылки, возвращающиеся из WordPress.

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

Чтобы обратный прокси работал, вам нужно указать внутренний IP-адрес сервера, на котором размещен blog.example.com. Это решение гарантирует, что это будет работать, даже если восходящий сервер (10.0.0.4) имеет несколько виртуальных хостов на основе имени.

 10.0.0.4 blog.example.com 

Для получения дополнительной информации см .:

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