2017-01-27 4 views
0

Мне было повезло в прошлом, когда мне пришлось перенести сайт с HTTP на HTTPS и установить SSL-сертификат, который я делаю моим хостом, и все просто работает.переход на сайт с http на https и SSL

Я сейчас работаю с хозяином, где, я думаю, мне нужно будет больше.

Я использую Wordpress в стеке Mysql и Apache. Каким будет правильный способ миграции. Выполнение поиска и замена через базу данных, а затем перенаправление через файл .htaccess?

В настоящее время у меня есть "https://example.com" working. Однако, как правильно обращаться с переадресацией с www на не-www для http и https в «https://example.com». Есть плагины Wordpress, которые «заставляют» SSL, но я слышал, что они могут делать неожиданные вещи.

Благодаря

ответ

1

Во-первых, я объясню процедуру без использования файла .htaccess: Если предположить, что у вас есть ваш WordPress сайт на месте сказать «http://example.com»

  1. Установите сертификат SSL (следуйте инструкциям, предоставленным вам эмитентом)
  2. Перейти в вашу базу данных; таблицу wp_options и изменить Значение опции «siteurl» и «home» для начала с https вместо http и offcourse сохранить изменения.
  3. Войдите в свою панель администратора WordPress и перейдите на . Настройки »Общие сведения. Нажмите «Сохранить параметры». Это гарантирует, что URL-адрес сайта будет исправлен где-нибудь еще, что должно быть.
  4. Затем перейдите по ссылке . НастройкиСсылка на номер и нажмите «Сохранить», чтобы убедиться, что все почтовые ссылки работают нормально.

  5. Установите этот плагин Search & Replace и активируйте его. Этот плагин должен помочь в исправлении изображений и неработающих ссылок путем обновления путей без необходимости писать код; это довольно понятно.

  6. Установите этот плагин Easy HTTPS Redirection и активируйте его. Этот плагин перенаправляет весь трафик с http на https независимо от того, что; вы также можете определить страницы, которые вы не хотите принуждать к https.

И да, я согласен с вами в том, что плагин WP Force SSL делает чудеса на веб-сайте, я пробовал его, и я не усложняю урок, но все же попробую. На этом этапе у вас будет ваш «https://example.com», который отлично работает

Во-вторых, я объясню, как выполнять ту же процедуру без использования какого-либо плагина. Мое предположение такое же, как и выше.

  1. Повторите шаги 1 и 2 выше.
  2. Не оставляйте свою базу данных, нам нужно выполнить поиск и заменить в MySQL с помощью SQL Query.Я перечислил лишь некоторые из вещей, необходимо заменить в запросе SQL ниже

    UPDATE wp_posts 
    SET guid = replace(guid, 'http://example.com', 'https://example.com'); 
    
    UPDATE wp_posts 
    SET post_content = replace(post_content, 'http://example.com', 'https://example.com'); 
    
    UPDATE wp_postmeta 
    SET meta_value = replace(meta_value,'http://example.com', 'https://example.com'); 
    

    NB: В зависимости от таблиц у вас есть, его всегда хорошо, чтобы сделать поиск и замену в таблице

  3. Для перенаправления с http на https мы будем использовать файл .htaccess. Попробуйте выполнить следующие действия с mod_rewrite в вашем .htaccess файле

    RewriteEngine On 
    RewriteCond %{HTTPS} !=on 
    RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
    

    или любой из различных подходов, приведенных в

http://www.askapache.com/htaccess/http-https-rewriterule-redirect.html

Вы также можете решить эту проблему изнутри PHP в случае, если ваш провайдер отключил .htaccess (что маловероятно, поскольку вы просили об этом, но в любом случае)

if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') { 
    if(!headers_sent()) { 
     header("Status: 301 Moved Permanently"); 
      header(sprintf(
      'Location: https://%s%s', 
      $_SERVER['HTTP_HOST'], 
      $_SERVER['REQUEST_URI'] 
     )); 
     exit(); 
    } 
} 

До этого момента оба метода https должны работать хорошо.

Затем, чтобы перенаправить не-WWW на WWW, используйте следующий код непосредственно ниже RewriteEngine On в файле .htaccess:

RewriteCond %{HTTP_HOST} ^example.com [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] 

Для WWW к не-WWW, используйте:

RewriteCond %{HTTP_HOST} ^www.example.com [NC] 
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301] 

Если вы находитесь на сервере Windows IIS, приведенный выше код не будет работать для вас. Я могу поделиться процедурой, если это необходимо.

+0

Отличный ответ и спасибо !. Я отметил, что принят. Один вопрос. Последняя часть, где вы делаете WWW для не www, также может быть выполнена через cpanel большинства хостов с 301 переадресацией, правильно? То же самое. –

+0

Да, это можно сделать. Его более интересно использовать его, если вы используете выделенный сервер; что означает твоего царя всего. Но все же я видел это в нескольких хостах – SamWanekeya