Как использовать ТОЛЬКО .htaccess для принудительной установки HTTPS на всех страницах сайта WordPress, размещенного на 1and1 - PullRequest
0 голосов
/ 30 мая 2018

Я без устали пытался принудительно установить HTTPS на весь свой веб-сайт WordPress после активации моего бесплатного SSL-сертификата, полученного с хостинга 1and1, чтобы все прошлые ссылки HTTP перенаправлялись на HTTPS.Я хочу принудительно установить HTTPS, изменив только файл .htaccess в корне моей веб-папки.Я пробовал несколько примеров, которые я нашел в Интернете, включая:

http://www.wpbeginner.com/wp-tutorials/how-to-add-ssl-and-https-in-wordpress/

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R,L]
</IfModule>

https://www.1and1.com/digitalguide/hosting/technical-matters/the-ten-best-htaccess-tricks/

<IfModule mod_rewrite.c>
# activate HTTPS
RewriteEngine On
RewirteCond %{Server_Port} !=443
RewriteRule ^(.*)$ http://yourdomain.tld/$1 [R=301, L]
</IfModule>

После попытки всех этих методов модификациифайл .htaccess, ни один из них не работал.Наконец-то я наткнулся на этот вопрос Переполнение стека и поместил блок кода PHP в файл functions.php в моей текущей папке с темами.Вот код:

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

Этот код PHP выполнил мою задачу по форсированию всех ссылок на HTTPS.Тем не менее, я хочу сохранить свой код в чистоте и оставить все это в файле .htaccess для лучшей организации, поэтому мне не нужно добавлять код PHP в файл functions.php каждый раз, когда я меняю тему моего WordPressвеб-сайт.

Может ли кто-нибудь объяснить, как выполнить принудительное использование HTTPS, ТОЛЬКО изменив файл .htaccess, или объяснить, где я мог ошибиться?

Единственный активный блоккод в моем файле .htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

AddHandler x-mapp-php5.5  .php

И я уже изменил мои настройки WordPress «Адрес WordPress (URL)» и «Адрес сайта (URL)» на «https://example.com/".

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

попробуйте это в файле .htaccess

RewriteEngine on
RewriteCond %{SERVER_NAME} =abc.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
0 голосов
/ 08 апреля 2019

Вы были близки.Это должно было быть:

RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

Мне просто нужно было сделать это с нашим пакетом хостинга на базе Windows (теперь Ionos).Я не уверен, почему они требуют, чтобы переписывание было сделано с .htaccess, а не с web.config.Что мне не нравится, так это то, что по какой-то причине меня раздражают двойные косые черты, а стандартные способы их удаления не работают.

0 голосов
/ 30 мая 2018

Ситуации, такие как http запросы, которые должны быть перенаправлены на https, лучше обрабатываются директивой Redirect, согласно документации Apache .Эта директива будет включена в файл конфигурации сервера.

Если у вас есть доступ только к .htaccess, вы можете использовать следующее:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...