Bitte empfehlen Sie mir nicht den langen und sehr detaillierten Thread mit mehr als 173 Upvotes. Bei mir hat es nicht funktioniert. Ich habe auch viele andere ausprobiert ( 1 , 2 , 3 , 4 ). Sie alle geben mir TOO_MANY_REDIRECTS oder Fehler 500. Also, hier ist mein Problem:
Mit meinem aktuellen .htaccess passiert Folgendes:
https://www.dukescasino.com/ - funktioniert perfekt
https://dukescasino.com/ - leitet zu den oben genannten weiter, was großartig ist
Die beiden folgenden Optionen werden problemlos geladen, sollten jedoch auf die https-Version umgeleitet werden:
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, hier ist die Liste der aktuell aktiven Plugins:
- Erweiterte benutzerdefinierte Felder
- Alles in einem SEO Pack
- Bop-Suchfeld Elementtyp für Navigationsmenüs
- Kontaktformular 7
- Kommentare deaktivieren
- Google XML-Sitemaps
- Jetpack von WordPress.com
- Suchen & 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. Darüber hinaus ist beim Versuch, ein ErrorDocument zur Bearbeitung der Anforderung zu verwenden, ein Fehler mit 500 internen Servern aufgetreten.
.htaccess
dreimal (auf die gleiche Weise) falsch geschrieben ? Ihre aktuelle .htaccess-Datei ist nicht vollständig, Ihnen fehlt eineRewriteEngine On
Direktive. Vermutlich, wenn Sie die kanonische Weiterleitung hinzufügen, fügen Sie diese ganz oben in Ihrer .htaccess-Datei hinzu? Sie geben an, dasshttps://example.com
Weiterleitungen OK sind, dies ist jedoch in Ihrer Konfigurationsdatei nicht angegeben? Wo / wie passiert das? Es wäre nützlich zu wissen, was Sie tatsächlich versucht haben - das funktioniert nicht.HTTPS
festgelegt wird (Ihre Ergebnisse legen etwas anderes nahe). Stehst du hinter einem Proxy? (Test E wird wahrscheinlich zu einer Art "rekursivem" 404 führen?)Antworten:
Bei 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>
quelle
Problem gelöst!
Endgültiger .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>
quelle
RewriteCond
folgende ändern , um Folgendes zu vermeidentoo many redirects
:RewriteCond %{HTTPS} !=on
R=301
anstelle von nur in BetrachtR
(was 302-Umleitung bedeutet).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
quelle
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 sie am Ende platzieren, führt dies aufgrund von Konflikten mit dem Cache-Plugin zu falschen Weiterleitungen).
<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 nicht durch WordPress durcheinander gebracht, falls sich einige Einstellungen ändern. Auch der
<IfModule>
Abschnitt kann problemlos wiederholt werden.Ich muss Jason Shah für die ordentliche Zugangsregel danken .
quelle
Zu Ihrer Information, es hängt wirklich von Ihrem Hosting-Anbieter ab.
In meinem Fall ( Infomaniak ) hat nichts oben tatsächlich funktioniert und ich habe eine Endlosumleitungsschleife erhalten .
Der richtige Weg dazu wird auf der Support-Website erklärt :
RewriteEngine on RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule (.*) https://your-domain.com/$1 [R=301,L]
Wenden Sie sich daher immer an Ihren Hosting-Anbieter. Hoffentlich haben sie einen Artikel, der erklärt, wie das geht. Andernfalls fragen Sie einfach den Support.
quelle
Dies ist getestet und sicher zu bedienen
Warum?: Wenn Wordpress Ihre Regeln zum erneuten Schreiben bearbeitet , stellen Sie daher 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 die URLs für WordPress-Adresse und Site-Adresse auch
https://
in den allgemeinen Einstellungen ändern (wp-admin/options-general.php
)quelle
Ich habe festgestellt, dass alle in diesen Fragen und Antworten aufgeführten Lösungen bei mir leider nicht funktionieren. Was funktionierte 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 Mehrbenutzernetzwerkmodus gelten. Wenn sich Ihr 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
quelle
Nichts von alledem hat bei mir funktioniert. Aber diese Zeilen lösten das gleiche Problem auf meiner WordPress-Site:
RewriteEngine On RewriteCond %{HTTP:HTTPS} !on RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
quelle
Der einfachste Weg, http in WordPress zu https umzuleiten , um site_url und home von http://example.com zu https://example.com zu ändern . Wordpress übernimmt die Umleitung. (Aus diesem Grund wird der Fehler "Zu viele Weiterleitungen" angezeigt. WordPress leitet zu http um, während .htaccess zu https umleitet.)
quelle
Hier ist eine alternative Lösung, die Sie verwenden können, wenn Sie nicht bearbeiten möchten
.htaccess
: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 Ende Ihres Themas platzieren
functions.php
quelle
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-WordPress-Datei .htaccess 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>
quelle
<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>
quelle
Der obige endgültige .htaccess und Test A, B, C, D, E haben bei mir nicht funktioniert. Ich habe gerade den 2-Zeilen-Code verwendet und er funktioniert auf 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.
quelle
Keine, wenn das bei mir funktioniert hat. Zuerst musste ich mir meinen Provider ansehen, um zu sehen, wie sie SSL in
.htaccess
meinem Provider aktivieren<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP:HTTPS} !on RewriteRule (.*) https://%{SERVER_NAME}/$1 [QSA,L,R=301] </IfModule>
Was mich Tage der Recherche gekostet hat, war, dass ich
wp-config.php
die folgenden Zeilen ergänzen musste, da sich meine bereitgestellte Site hinter einem Proxy befindet:/** * Force le SSL */ define('FORCE_SSL_ADMIN', true); if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on';
quelle
Fügen Sie einfach diesen Code in Ihrer .htaccess-Datei in WordPress hinzu oder ersetzen Sie ihn
# 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
quelle
Weiterleiten von http zu https: // www
Das wird sicher funktionieren!
quelle
Fügen Sie einfach diesen Code hinzu, und es wird wie ein Zauber funktionieren:
quelle