cakephp-und https-Umleitungen
Ich habe eine Website, hat einige strenge Anforderungen für SEO-Zwecke.
Die Hauptseite umgeleitet wird alle http-Anfragen auf https, das ich getan habe, indem diese in die AppController:
public function forceSSL() {
return $this->redirect('https://' . env('SERVER_NAME') . $this->here);
}
public function beforeFilter() {
$this->Security->blackHoleCallback = 'forceSSL';
$this->Security->requireSecure();
}
Habe ich ein Problem mit 404-Seiten, die Sie nicht umleiten zu https (zB. www.hublink.net/asdfg)
Außerdem habe ich diese 2 Zeilen an die .htaccess Datei (aus einem anderen Beitrag), und entfernt den obigen code, aber bekomme dann ein "redirect-Schleife" Fehler
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich dieses in meine .htaccess-Datei und es funktioniert Super. Ich habe es ignoriert lokalen und staging-URLs, wie wenn ich http://local.example.com es nicht mit Gewalt Umleitung für die url. Diese Zeilen können entfernt werden. Ich mag mit dem .htaccess Ansatz, über den man in den AppController. Dies ist auch die oberste Ebene .htaccess-Datei in einem standard-CakePHP-Installation auf einem shared-hosting-Umgebung. Sind es drei .htaccess-Dateien in einem normalen Cakephp installieren.
Überprüfen Sie Ihre hosting-Umgebung und stellen Sie sicher, dass Ihr erlaubt zu haben .htaccess-Dateien. Müssen sicherstellen, dass ModRewrite installiert und funktioniert auch.
Sehen https://wiki.apache.org/httpd/RewriteHTTPToHTTPS
Es funktionierte für mich.
So, ich konnte Sie nicht finden, ein guter Weg, um Kraft, meine gesamte Website auf https ohne redirect loops und Fehler. Dies funktioniert auf einer Seite der Ebene als auch, wenn Sie ändern die einzelnen controller für die Seite). wie auch immer, dies ist, was ich schließlich auch Tat, nachdem messing mit dies für ein paar Tage.
In meinem Ordner Controller im AppController.php ich legte den folgenden code direkt unter:
public function beforeFilter hinzu() {
=================================
Also, was dies tut, ist Sie zuerst überprüfen, ob es http oder https. Wenn es http, dann habe ich die Umleitung der Seite auf diese https-version. Indem Sie in der AppController.php controller ... das wird sicher die ganze Website.
Hoffe, dies hilft jemand, der auch kämpfen.
if($_SERVER['REQUEST_SCHEME'] == "http") { return $this->redirect('https://' . env('SERVER_NAME') . $this->here); }
. Nicht jeder wird$_SERVER['HTTP_X_FORWARDED_PROTO']
.htaccess
Die Letzte Methode war für CakePHP2. Im folgenden wird aktualisiert, etwas für CakePHP3:
In meinem Ordner Controller im AppController.php das folgende tun:
1.******** Fügen Sie In Der Initialize-Funktion *********
************ Fügen Sie Eine Neue Public-Funktion **********
3.**** Fügen Sie diese in die beforeFilter hinzu-Funktion ******
Wenn Sie sehen #SERVER-HTTPS-AUF# (auf), fügen Sie
Wenn Sie sehen #SERVER-HTTPS-AUF# (1), fügen Sie
Wenn Sie sehen #SERVERPORT443#, fügen Sie
Wenn Sie sehen #LOADBALANCER#, fügen Sie
Wenn Sie sehen #CDN#, fügen Sie
Wenn Sie sehen #Cloudflare#, fügen Sie
Wenn Sie sehen #ENVHTTPS#, fügen Sie
Unten auf dem ssl-test-Seite finden Sie das HTTP-HOST. Dies sollte das gleiche wie in Ihrer Domäne. Wenn nicht, müssen Sie möglicherweise fest, Ihre Domäne zu verhindern, umleiten Fragen, wie diese:
mehr info hier