Как принудительно перенаправить http://example.com в https://example.com через файл .htacess - PullRequest
0 голосов
/ 11 октября 2019

У меня есть домен, в котором установлен подстановочный SSL. Мы внесли изменения в Субдомены и его автоматическое перенаправление с HTTP на HTTPS для Субдоменов.

Но для основного домена, так как его http://example.com, Я не могу перенаправить его на https://example.com [быть таким же без www].

Все примеры, которые я получаю из Интернета и исследований, относятся к www с не-www или не-www к www.

Моим требованием является HTTPS для не-www к не-www.

Код, который работает для моих поддоменов, не работает для не-WWW.

Рабочий код для поддоменов, как показано ниже:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

Я ожидаю http://example.com для принудительного автоисцеления до https://example.com

Ответы [ 2 ]

2 голосов
/ 11 октября 2019

Попробуй это. Надеюсь, что это работает для вас

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
0 голосов
/ 16 октября 2019

из config.php и включите или установите hooks в true:

$config['enable_hooks'] = TRUE;

Затем создайте новый файл с именем hooks.php в папке config и добавьте следующее:

$hook['post_controller_constructor'][] = array(
    'function' => 'redirect_ssl',
    'filename' => 'ssl.php',
    'filepath' => 'hooks'
);

Создайте новый каталог с именем hooks внутри папки приложения (т.е. application / hooks), а затем создайте новый файл с именем ssl.php inside Добавьте следующий код в файл ssl.php:

function redirect_ssl() {
    $CI =& get_instance();
    $class = $CI->router->fetch_class();
    $exclude =  array('client');  // add more controller name to exclude ssl.
    if(!in_array($class,$exclude)) {
        // redirecting to ssl.
        $CI->config->config['base_url'] = str_replace('http://', 'https://', $CI->config->config['base_url']);
        if ($_SERVER['SERVER_PORT'] != 443) redirect($CI->uri->uri_string());
    } else {
        // redirecting with no ssl.
        $CI->config->config['base_url'] = str_replace('https://', 'http://', $CI->config->config['base_url']);
        if ($_SERVER['SERVER_PORT'] == 443) redirect($CI->uri->uri_string());
    }
}
...