Пренасочване на не-www и www http заявки към https://www

Трябва да пренасоча всички не-www заявки и http заявки на моя уебсайт към https://www.example.com . Използвам Apache сървър, но не мога да намеря нищо полезно, което да ми помогне да направя това. В момента използвам файла .htaccess за пренасочване на не-www заявка към www.

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

person Mattia Nocerino    schedule 19.02.2015    source източник


Отговори (4)


Добавете това към вашия .htaccess:

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
person micwallace    schedule 19.02.2015
comment
Това може да е нещо във вашето приложение или конфигурация на сървъра, което причинява пренасочването. - person micwallace; 21.02.2015

Можете да използвате това единствено правило, за да добавите и двете пренасочвания:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L,NE]
person anubhava    schedule 19.02.2015
comment
Трябваше да споменете въпросния CloudFlare. - person anubhava; 21.02.2015

Решено! Използвам CloudFlare CDN, така че трябваше да добавя този код за пренасочване на заявки, които не са https.

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

Можем да го направим и чрез 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; }
person Nilesh Chourasia    schedule 11.03.2015