2017-06-09 4 views
0

überprüft das Forum, konnte aber keine ideale Antwort finden. Ich habe kürzlich ein SSL-Zertifikat auf meiner Website installiert und dabei 301 Weiterleitungen über die .htaccess-Datei für fast 400 Seiten-URLs erstellt (damit Google glücklich bleibt). Ich dachte daran zu benutzen;301 Redirect von http zu https gleichen Seitenname

redirect 301 /contact.php https://www.mydomainname.co.uk/contact.php 

aber es bricht die Website. Die einzige Lösung, die ich gesehen habe, ist:

RewriteEngine on 
RewriteCond %{HTTPS} off 
RewriteRule ^contact\.php$ https://www.mydomainname.co.uk/contact.php [L,R=301] 

Das oben genannte scheint eine Menge Code für jede der 400 Seiten zu verwenden! Gibt es einen schnelleren Weg mit weniger Code, den ich in der .htaccess-Datei verwenden kann?

Vielen Dank. Hoffe jemand kann beraten.

Antwort

0

Es gibt zwei grundlegende Arten von Seiten mit Apache Umleitung: Redirect (von mod_alias) und RewriteRule usw. (von mod_rewrite).

Redirect ist sehr einfach: es wird nur eine einzelne URL zu einem anderen umleiten. Es kann manchmal nützlich sein, aber seine Nützlichkeit ist auf seine Einfachheit beschränkt: Im Fall der HTTP-zu-HTTPS-Umleitung kann es nicht zwischen HTTP- und HTTPS-Verbindungen unterscheiden, so dass es nur versucht, zu HTTPS umzuleiten, auch wenn Sie re bereits auf HTTPS (und damit enden Sie in einer unendlichen Redirect-Schleife).

RewriteRule, auf der anderen Seite ist fortgeschrittener und flexibler. Sie können RewriteCond verwenden, um Anforderungen umzuleiten; In Ihrem Fall sollten Sie Anfragen nur umleiten, wenn sie eine HTTP-Verbindung haben.

Wie Sie bereits erwähnt haben, möchten Sie für viele (ich vermute alle) Anfragen an HTTPS umleiten; Sie können dies ganz einfach mit nur einer einzigen Regel:

# Enable rewrites 
RewriteEngine on 

# Only run next RewriteRule on HTTP connections (not HTTPS) 
RewriteCond ${HTTPS} off 

# Redirect any page to the same URL with https:// schema 
RewriteRule (.*) https://${SERVER_NAME}/$1 [L,R=301] 

(. Die ${SERVER_NAME} Variable auf Ihren Domainnamen automatisch gleich sein, so können Sie dies auch mit mehreren Domain-Namen auf Webservern verwenden)

+0

Frxstrem , Vielen Dank für Ihr Feedback. In Bezug auf Google wird der obige Code die Autorität an die https-Version der Seite weitergeben, d. H. Wie bei einer normalen, spezifischen Seitenumleitung? – user2932029

+0

@ user2932029 Ja, das obige sollte identisch mit einer seitenspezifischen Umleitung funktionieren. – Frxstrem

+0

Der von Ihnen empfohlene Code wurde nur zur .htaccess-Datei hinzugefügt, tut aber leider nichts. Ich habe eine Shared-Hosting-Plattform verwendet. Wäre es möglich, dass Sie die Bearbeitung Ihres Codes bestätigen, um ihn domainspezifisch und nicht serverseitig zu machen? – user2932029