2016-06-14 10 views
1

Ich versuche, meine Website auf HTTPS für alle URLs zu verschieben. Ich verwende Aws Server-Instanzen mit Load Balancer. Ich habe es geschafft, Website auf https umleiten, während auf http durch .htaccess (wie unten angegeben), aber wo immer ich Yii::app()->getBaseUrl(true). verwendet, gibt URLs mit http, aber nicht https.yii 1.0 https in getbaseurl funktioniert nicht auf aws load balancer

Könnte jemand bitte mir helfen, dies zu sortieren. Ich möchte, dass alle URLs HTTPS sind.

Ich habe versucht, in Basisklassen zu suchen und festgestellt, dass es eine Funktion in chttprequest Klasse, um zu überprüfen, ob die Verbindung sicher ist oder nicht, aber diese Funktion scheint nicht zu funktionieren. Bitte helfen Sie.

public function getIsSecureConnection() 
{ 
    return isset($_SERVER['HTTPS']) 
      && (strcasecmp($_SERVER['HTTPS'],'on') === 0 || $_SERVER['HTTPS'] == 1) 
      || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) 
      && strcasecmp($_SERVER['HTTP_X_FORWARDED_PROTO'],'https') === 0; 
} 

.htaccess (Dies funktioniert gut.)

RewriteEngine On 

RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

Antwort

0

Sie auf Ihre protected/config/main.php Datei gehen können den Standardwert zu ändern. Fügen Sie eine Anfragekomponente hinzu und konfigurieren Sie die Eigenschaft baseUrl.

'components' => array(
     ... 
     'request' => array(
      'baseUrl' => 'https://www.example.com', 
     ), 
    ), 

The baseUrl wird nun https ab sofort sein. Sie müssen nichts in chttprequest Anfrage ändern.

+0

Vielen Dank für Ihre Hilfe, aber jetzt, wenn gesetzt baseUrl in main.php als https://example.com/ folgt und dann Yü rufen :: app() -> getBaseURL (true) in einer beliebigen Ansicht Datei, Es wird eine seltsame URL wie folgt zurückgegeben: https://example.com/http://example.com/index.php Ich checkte in ** CHttpRequest ** Klasse Funktion ** GetBaseUrl ** es hat folgenden Code drin '$ this-> getHostInfo(). $ this -> _ baseUrl: $ this -> _ baseUrl; ' hostinfo gibt den ersten Teil zurück und _baseUrl gibt den zweiten Teil zurück. es funktioniert nicht wie erwartet. –

+0

Nun, ich kann sagen, das funktioniert nicht für mich –

Verwandte Themen