2015-02-19 3 views
2

Мне нужно перенаправить все запросы, не связанные с WWW, и http-запрос на моем сайте до https://www.example.com. Я использую сервер Apache, но я не могу найти ничего полезного, чтобы помочь мне в этом. В настоящее время я использую файл .htaccess для перенаправления запроса без www на www.Переадресовать не-www и www http-запросы на https: // www

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L] 

ответ

0

Решено! Я использую CloudFlare CDN, поэтому мне нужно было добавить этот код для перенаправления не https-запросов.

RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' 
RewriteRule ^(.*)$ https://www.example.com/$1 [L, R=301] 
0

Добавьте к этому ваш .htaccess:

RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
+0

Я получаю ошибку цикла переадресации, если добавить, что. –

+0

Это может быть что-то в вашей конфигурации приложения или сервера, вызывающее перенаправление. – micwallace

+0

Да, это был CloudFlare CDN ... –

0

Вы можете использовать одно правило для добавления и перенаправляет:

RewriteEngine On 

RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{HTTPS} off 
RewriteRule^https://www.example.com%{REQUEST_URI} [R=301,L,NE] 
+0

Я получаю ошибку цикла перенаправления с этим. –

+0

Вы должны были упомянуть 'CloudFlare'. – anubhava

0

Мы можем сделать это с помощью PHP также, пожалуйста, проверьте ниже код, чтобы сделать это: -

if(!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == ""){ 
    $redirect = "https://".str_replace("www.","",$_SERVER['HTTP_HOST']).$_SERVER['REQUEST_URI']; 
    header("HTTP/1.1 301 Moved Permanently"); 
    header("Location: $redirect"); } 

$protocol = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://"; if (substr($_SERVER['HTTP_HOST'], 0, 4) !== 'www.') { 
    header('Location: '.$protocol.'www.'.$_SERVER['HTTP_HOST']); 
    exit; } 
Смежные вопросы