it-swarm.com.de

Verwenden Sie .htaccess, um HTTP zu HTTPs umzuleiten

Bitte, empfehlen Sie mir nicht den langen und sehr detaillierten Thread mit mehr als 173 Upvotes. Es hat bei mir nicht funktioniert. Ich habe auch viele andere ausprobiert ( 1 , 2 , 3 , 4 ). Sie alle geben mir TOO_MANY_REDIRECTS oder Fehler 500. Hier ist mein Problem:

Mit meinem aktuellen .htaccess geschieht Folgendes:

https://www.dukescasino.com/ - funktioniert einwandfrei

https://dukescasino.com/ - leitet zu dem oben genannten weiter, was großartig ist

Die beiden folgenden Optionen werden gut geladen, sollten jedoch auf die https-Version umgeleitet werden:

http://www.dukescasino.com/

http://dukescasino.com/

Hier ist der aktuelle .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ich glaube nicht, dass es relevant ist, aber wenn ja, ist hier die Liste der aktuell aktiven Plugins:

  • Erweiterte benutzerdefinierte Felder
  • Alles in einem SEO Pack
  • Bop-Suchfeld-Elementtyp für Nav-Menüs
  • Kontaktformular 7
  • Kommentare deaktivieren
  • Google XML-Sitemaps
  • Jetpack von WordPress.com
  • Suchen und filtern
  • Schieberegler WD
  • TablePress
  • UpdraftPlus - Sichern/Wiederherstellen
  • Wordfence-Sicherheit
  • WPide
  • WP Smush
  • WP Super Cache

Edit 1 - Durchgeführte Tests:

Test A:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
RewriteCond %{HTTP_Host} !^www\.
RewriteRule .* https://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ergebnis: ERR_TOO_MANY_REDIRECTS

Test B:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ergebnis: ERR_TOO_MANY_REDIRECTS

Test C:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{SERVER_PORT} ^80$
 RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ergebnis: ERR_TOO_MANY_REDIRECTS

Test D:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ergebnis: ERR_TOO_MANY_REDIRECTS

Test E:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_Host} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_Host}%{REQUEST_URI}$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI}$1

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ergebnis: 302 gefunden. Bei dem Versuch, ein ErrorDocument zu verwenden, um die Anforderung zu verarbeiten, wurde außerdem ein Fehler 500 Internal Server Error festgestellt.

67
Cristiano Maia

Problem gelöst!

Letzter .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{ENV:HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
81
Cristiano Maia

Auf Dreamhost funktionierte dies:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
130
Jason Shah

Für mich geht das:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !on           
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
14
henrike

In meinem Fall enthielt die htaccess-Datei viele Regeln, die von Plugins wie Far Future Expiration und WPSuperCache installiert wurden, sowie die Zeilen von WordPress selbst.

Um die Dinge nicht durcheinander zu bringen, musste ich die Lösung an die Spitze von htaccess setzen (dies ist wichtig, wenn Sie es am Ende setzen, führt dies zu falschen Weiterleitungen aufgrund von Konflikten mit dem Cache-Plugin.)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
</IfModule>

Auf diese Weise werden Ihre Zeilen von wordpress nicht durcheinander gebracht, falls sich einige Einstellungen ändern. Auch die <IfModule> Abschnitt kann ohne Probleme wiederholt werden.

Ich muss mich bei Jason Shah für die ordentliche htaccess-Regel bedanken .

11

Für Ihre Informationen hängt es wirklich von Ihrem Hosting-Anbieter ab.

In meinem Fall ( Infomaniak ) funktionierte nichts darüber und ich bekam eine unendliche Weiterleitungsschleife.

Der richtige Weg, dies zu tun, ist eigentlich auf ihrer Support-Site erklärt :

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://your-domain.com/$1 [R=301,L]

Überprüfen Sie also immer Ihren Hosting-Provider. Hoffentlich haben sie einen Artikel, der erklärt, wie das geht. Ansonsten fragen Sie einfach den Support.

4
Indigo

Dies ist getestet und sicher zu verwenden

Warum ?: Wenn Wordpress Ihre Re-Write-Regeln bearbeitet, stellen Sie sicher, dass Ihre HTTPS-Regel nicht entfernt wird! Dies ist also kein Konflikt mit nativen Wordpress-Regeln.

<IfModule mod_rewrite.c>
   RewriteCond %{HTTPS} !=on
   RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
  #Your our Wordpress rewrite rules...
</IfModule>
# END WordPress

Hinweis: Sie müssen WordPress Address & Site Address URLs in Allgemeine Einstellungen auch in https:// ändern (wp-admin/options-general.php).

2
l2aelba

Ich habe festgestellt, dass alle in diesem Q & A aufgeführten Lösungen für mich leider nicht funktionierten. Was hat funktioniert, war:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

RewriteCond %{HTTP_Host} ^example\.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.example\.com$
RewriteRule ^/?$ "https\:\/\/www\.example\.com\/" [R=301,L]
</IfModule>
# End Wordpress

Beachten Sie, dass die obigen Wordpress-Regeln für Wordpress im Mehrbenutzer-Netzwerkmodus gelten. Wenn sich Wordpress im Single-Site-Modus befindet, würden Sie Folgendes verwenden:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{HTTP_Host} ^example\.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.example\.com$
RewriteRule ^/?$ "https\:\/\/www\.example\.com\/" [R=301,L]
</IfModule>
# End Wordpress
1
Steve

Nichts davon hat für mich funktioniert. Aber diese Zeilen lösten dasselbe Problem auf meiner WordPress-Site:

RewriteEngine On

RewriteCond %{HTTP:HTTPS} !on
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
1
lundgren

Fügen Sie dies in die .htaccess-Datei von WordPress ein:

RewriteCond %{HTTP_Host} ^yoursite.com [NC,OR]
RewriteCond %{HTTP_Host} ^www.yoursite.com [NC]
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [L,R=301,NC]

Daher sollte die Standard-.htaccess-Datei von WordPress folgendermaßen aussehen:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{HTTP_Host} ^yoursite.com [NC,OR]
RewriteCond %{HTTP_Host} ^www.yoursite.com [NC]
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [L,R=301,NC]
</IfModule>
0
Tommykx

einfachste Möglichkeit, http zu https in wordpress umzuleiten, um site_url zu ändern und von http://example.com zu https://example.com zu wechseln. Wordpress übernimmt die Umleitung. (deshalb erhalten Sie den Fehler "zu viele Weiterleitungen", WordPress leitet zu http um, während .htaccess zu https umgeleitet wird.)

0
Rafael

Keine, wenn dies für mich funktionierte. Zuerst musste ich bei meinem Provider nachsehen, wie er SSL in .htaccess aktiviert, den mein Provider angibt 

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{HTTP:HTTPS} !on
   RewriteRule (.*) https://%{SERVER_NAME}/$1 [QSA,L,R=301]
</IfModule>

Was ich jedoch tagelang recherchieren musste, war, dass ich wp-config.php die folgenden Zeilen hinzufügen musste, da sich meine Website hinter einem Proxy befindet:

/**
 * Force le SSL
 */
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on';
0
Alain ANDRE
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
    RewriteEngine On
    RewriteCond %{HTTP_Host} ^digitalsoftwaremarket.com [NC]
    RewriteRule ^(.*)$ http://www.digitalsoftwaremarket.com/$1 [L,R=301]
</IfModule>
0
Saurabh Panchal

Hier ist eine alternative Lösung, die Sie verwenden können, wenn Sie .htaccess nicht bearbeiten möchten:

add_action( 'template_redirect', 'nonhttps_template_redirect', 1 );

function nonhttps_template_redirect() {

    if ( is_ssl() ) {

        if ( 0 === strpos( $_SERVER['REQUEST_URI'], 'https' ) ) {

            wp_redirect( preg_replace( '|^http://|', 'https://', $_SERVER['REQUEST_URI'] ), 301 );

            exit();

        } else {

            wp_redirect( 'https://' . $_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI'], 301 );

            exit();

        }

    }

}

Sie können dies am unteren Rand Ihres Designs platzieren. functions.php

0
Higher Coding

Der obige letzte Test und Test A, B, C, D, E funktionierten nicht für mich. Ich habe gerade unter zwei Zeilen Code verwendet und es funktioniert in meiner WordPress-Website:

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.thehotskills.com/$1 [R=301,L]

Ich bin nicht sicher, wo ich den Fehler gemacht habe, aber diese Seite hat mir geholfen.

0
Raj Singh

Weiterleitung von http nach https: // www

RewriteEngine On
RewriteCond %{HTTP_Host} ^example\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

Das wird sicher funktionieren!

0
Kundan roy

Fügen Sie diesen Code einfach in Ihre .htaccess-Datei in WordPress ein oder ersetzen Sie diesen

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
0
Zihadul Islam