Привет читатель,
В этой записи мы будем переводить сайт на HTTPS, а также заменять ссылки протокола передачи данных HTTP на HTTPS.
На момент публикации CMS WordPress работает в связке с базой данных MySQL. Я использую MySQL 5.5.
Актуально для WordPress 4.9.4. Для более новых версий, информация может быть недействительна. Внимание! Перед изменением не забывайте о резервных копиях изменяемых файлов и базы данных.
Консоль администратора
Для начала войдите в Консоль управления WordPress » Настройки » Общие.
Впишите новый URL адрес или адрес с https:// в поля:
Адрес WordPress (URL)
Адрес сайта (URL)
Не забудьте сохранить настройки.
Если у вас нет возможности войти в консоль, можно изменить эти значения в файле wp-config.php
1 2 |
define('WP_HOME','https://example.com'); define('WP_SITEURL','https://example.com'); |
.htaccess — конфигурационный файл веб-сервера Apache
Если вы используете «Постоянные ссылки» (Консоль » Настройки » Постоянные ссылки) или другие rewrite и редиректы, тогда необходимо внести изменения в файл .htaccess. Обычно он располагается в корневой директории вашего сайта и может быть «скрыт» или недоступен для редактирования. В этом случае свяжитесь с вашим хостинг-провайдером.
Инструкция по замене доменного имени в файле .htaccess (если вы меняете HTTP на HTTPS этот шаг можно пропустить):
- Сделайте резервную копию вашего файла .htaccess. Это не рекомендация, а требование.
- Откройте файл .htaccess в текстовом редакторе.
- Просмотрите на его содержимое, ищите какие-либо пользовательские записи или переадресации, которые вы вводили ранее. Скопируйте их в другой текстовый файл для безопасного хранения, т.к. необходимо сбросить файл на «стандартный» используя новое доменное имя.
- Закройте файл.
- В секции «Постоянные ссылки» (Консоль » Настройки » Постоянные ссылки) перепроверьте настройки и нажмите «Сохранить изменения» тем самым WordPress обновит настройки ваших ссылок в файле .htaccess.
- Откройте новый файл .htaccess и проверьте, существуют ли ваши пользовательские записи и перенаправления. Если их нет, скопируйте их из сохраненного файла и вставьте их в новый файл .htaccess.
- Внесите необходимые изменения в эти пользовательские перезаписи и перенаправления, чтобы отразить новый адрес сайта.
- Сохраните файл.
- Проверьте эти перенаправления, чтобы убедиться, что они работают.
Инструкция для замены HTTP на HTTPS в файле .htaccess (полный отказ от HTTP):
- Сделайте резервную копию вашего файла .htaccess. Это не рекомендация, а требование.
- Откройте файл .htaccess в текстовом редакторе.
- Вставьте после строки RewriteEngine On следующее и сохраните файл:
1 2 3 4 |
# перенаправление всех HTTP запросов на HTTPS RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] |
Изменения в базе данных MySQL
Перед любым вмешательством в базу данных, делайте резервную копию и УБЕДИТЕСЬ, что вы знаете, что меняете. Замените java.md на свой домен.
- Обновите медиафайлы / изображения, которые используют http в таблице wp_posts.
Этот запрос обновляет атрибуты src, которые используют двойные кавычки:
1 2 |
UPDATE `wp_posts` SET post_content = REPLACE(post_content, 'src="http://java.md', 'src="https://java.md') WHERE post_content LIKE '%src="http://java.md%'; |
Для одинарных кавычек:
1 2 |
UPDATE `wp_posts` SET post_content = REPLACE(post_content, 'src='http://java.md', 'src='https://java.md') WHERE post_content LIKE '%src='http://java.md%'; |
- Обновите любые полные ссылки. Этот запрос обновляет URL-адреса атрибутов href, которые используют двойные кавычки:
1 2 |
UPDATE `wp_posts` SET post_content = REPLACE(post_content, 'href="http://java.md', 'href="https://java.md') WHERE post_content LIKE '%href="http://java.md%'; |
Для одинарных кавычек:
1 2 |
UPDATE `wp_posts` SET post_content = REPLACE(post_content, 'href='http://java.md', 'href='https://java.md') WHERE post_content LIKE '%href='http://java.md%'; |
- Перейдем к таблице wp_postmeta.
1 2 |
UPDATE `wp_postmeta` SET `meta_value` = REPLACE(meta_value, 'http://java.md', 'https://java.md') WHERE meta_value LIKE '%http://java.md%'; |
- Перейдем к таблице wp_comments. Этот запрос изменяет URL-адреса авторов комментариев, указывающих на http-версию вашего сайта. Это в случае, если вы когда-либо отвечали на чей-либо комментарий.
1 2 |
UPDATE `wp_comments` SET comment_author_url = REPLACE(comment_author_url, 'http://java.md', 'https://java.md') WHERE comment_author_url LIKE '%http://java.md%'; |
- Следующий запрос обновляет содержимое комментариев на вашем сайте. Если в комментариях есть http ссылки вашего сайта, они будут обновлены до https.
1 2 |
UPDATE `wp_comments` SET comment_content = REPLACE(comment_content, 'http://java.md', 'https://java.md') WHERE comment_content LIKE '%http://java.md%'; |
На этом основная замена завершена. Вы можете поискать еще ссылки в таблице wp_posts (не учитывая столбец GUID, об этом читайте ниже) и изменить их отдельно следующим запросом (запрос для поиска только на чтение, никаких замен не производится, иными словами запрос безопасен):
Замените WP_DB_NAME на имя вашей базы данных, java.md на ваш домен.
1 |
SELECT * FROM `WP_DB_NAME`.`wp_posts` WHERE (CONVERT(`ID` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`post_author` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`post_date` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`post_date_gmt` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`post_content` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`post_title` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`post_excerpt` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`post_status` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`comment_status` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`ping_status` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`post_password` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`post_name` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`to_ping` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`pinged` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`post_modified` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`post_modified_gmt` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`post_content_filtered` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`post_parent` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`menu_order` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`post_type` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`post_mime_type` USING utf8) LIKE '%%http://java.md%%' OR CONVERT(`comment_count` USING utf8) LIKE '%%http://java.md%%'); |
В результатах поиска, будет выведен список постов, в которых найдены ссылки вашего домена с http.
Важная деталь про столбец GUID в таблице wp_posts:
При поиске вашего домена непосредственно в базе данных вы столкнетесь с экземплярами URL-адреса, расположенными в столбце «guid» в таблице wp_posts. Многие рекомендуют заменять GUID в таблице wp_posts, но мы так делать не будем.
Не меняйте содержимое этого поля.
Термин «GUID» означает «глобальный уникальный идентификатор». Это поле, которое предназначено для хранения идентификатора для поста (записи), который: a) является уникальным во всем пространстве и времени, и b) никогда не изменяется. Поле GUID в основном используется для создания фидов WordPress.
Изменение GUID будет означать, что многие сборщики фидов (feedreaders) будут неожиданно отображать ваш контент для читателя , как если бы это был новый контент, возможно, раздражая ваших пользователей (если читатели фидов ещё остались, отпишитесь в комментариях если вы все еще пользуетесь фидами). 😉
Однако вторая часть этого заключается в том, что GUID никогда не должен меняться. Даже если вы перемещаете домены, посты и их версии остаются теми же, даже на новом месте. Сборщики фидов, при изменении URL-адресов, все равно должны знать, что они прочитали некоторые ваши посты раньше, и, следовательно, GUID должен оставаться неизменным.
Why No PadLock? У меня HTTPS а замочек красного цвета, почему?
Если на вашем сайте, на текущей странице остались HTTP ссылки, то в адресной строке браузера будет «красный замок», что говорит о небезопасном соединении. В этом случае, стоит открыть «Исходный код страницы» в браузере и найти все http «хвосты». Вариант проще: воспользоваться сервисом Why No PadLock?
В результатах будет полный отчёт, со всеми htttp ссылками.