Meine Wordpress-Website befindet sich unter example.com/wordpress und ich benötige alles, um nur über SSL darauf zugreifen zu können.
Ich habe eine .htaccess-Regel erstellt, die http -> https umleitet:
RewriteEngine On
RewriteRule ^/?(.*) https://%{SERVER_NAME}/wordpress/directory/$1 [R,L]
Nach der Implementierung dieser Regel ist der Zugriff auf die Website nicht mehr möglich, da sie sich in einer Umleitungsschleife befindet.
Was mache ich falsch?
Mein Wordpress .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/directory/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/directory/index.php [L]
</IfModule>
Dies ist eine späte Antwort, aber das funktioniert für mich:
Ändern Sie die RewriteCond in diese
RewriteCond %{HTTP:X-Forwarded-Proto} !https
Sollte so sein:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://yourdomain.com/$1 [R,L]
Ohne ein Htaccess-Experte zu sein, würde ich sagen, dass Ihnen eine RewriteCond
- eine Bedingung fehlt.
Überprüfen Sie, ob es sich um Port 80 handelt. Versuchen Sie Folgendes:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^/?(.*) https://%{SERVER_NAME}/wordpress/directory/$1 [R,L]
UPDATE:
Nachdem ich Ihre aktualisierte Frage mit dem vollständigen .htaccess-Code gesehen habe, mache ich Folgendes:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/directory/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/directory/index.php [L]
RewriteCond %{HTTPS} off
RewriteRule ^/?(.*) https://%{SERVER_NAME}/wordpress/directory/$1 [R,L]
</IfModule>
Haben Sie Ihre Bedingung und Regel unter den Standards von Wordpress.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
Quelle https://www.godaddy.com/help/redirect-http-to-https-automatically-8828
Websites hinter Load Balancern oder Reverse-Proxys, die HTTP_X_FORWARDED_PROTO
unterstützen, können durch Hinzufügen des folgenden Codes zur wp-config.php
-Datei über dem require_once-Aufruf behoben werden:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS'] = 'on';
oder mit einem Plugin
Fügen Sie es in den WordPress-Plugins-Ordner Ihrer Website ein und aktivieren Sie es im Plugins-Admin
<? /* Plugin Name: Set headers */
if (stripos(get_option('siteurl'), 'https://') === 0) {
$_SERVER['HTTPS'] = 'on';
// add JavaScript detection of page protocol, and pray!
add_action('wp_print_scripts', 'force_ssl_url_scheme_script');
}
function force_ssl_url_scheme_script() {
?>
<script>
if (document.location.protocol != "https:") {
document.location = document.URL.replace(/^http:/i, "https:");
}
</script>
<?php
}
Es funktioniert wie
http://www.exmaple.com/blog/
to https://www.exmaple.com/blog/
http://www.exmaple.com/
to https://www.exmaple.com/
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
oder nur für eine einzelne Seite
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} directory
RewriteRule ^(.*)$ https://www.example.com/directory/$1 [R,L]
oder Sie können diese PHP zu einer bestimmten Datei hinzufügen
if (!isset($_SERVER['HTTPS']) || !$_SERVER['HTTPS']) { // if request is not secure, redirect to secure url
$url = 'https://' . $_SERVER['HTTP_Host']
. $_SERVER['REQUEST_URI'];
header('Location: ' . $url);
exit;
}
oder kombinieren Sie die WordPress-Umschreiberegeln mit den SSL-Regeln.
RewriteRule ^(.*)$ https://www.example.com/directory/index\.php[R,L]