.htaccess 不会将我的网站从 HTTP 重定向到 HTTPS

.htaccess 不会将我的网站从 HTTP 重定向到 HTTPS

我的 .htaccess 文件没有将我的域名从 HTTP 重定向到 HTTPS。我的网页重定向到了 HTTPS,但没有重定向到我的域名。

您知道是什么原因导致了这个问题吗?

RewriteEngine On
RewriteCond %{HTTP_HOST} ^maghreb-secours\.com [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

php_value upload_max_filesize 200M
php_value post_max_size 200M
# 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]
</IfModule>

# END WordPress

答案1

看起来好像有什么东西正在将对你的 apex 的请求重定向到主机www,并且你的RewriteCond配置仅适用于 apex(^maghreb-secours而不是^www.maghreb-secours

$ curl -s --head http://maghreb-secours.com/ | grep -e "^HTTP" -e "^Location:"
HTTP/1.1 301 Moved Permanently
Location: http://www.maghreb-secours.com/
$ curl -s --head https://maghreb-secours.com/ | grep -e "^HTTP" -e "^Location:"
HTTP/1.1 301 Moved Permanently
Location: https://www.maghreb-secours.com/
$ curl -s --head http://www.maghreb-secours.com/ | grep -e "^HTTP" -e "^Location:"
HTTP/1.1 200 OK
$ curl -s --head https://www.maghreb-secours.com/ | grep -e "^HTTP" -e "^Location:"
HTTP/1.1 200 OK

另外,我不确定是否需要反斜杠来转义主机名中的点。

也许这会起作用(包括顶点,以防您的配置在未来发生变化)?

RewriteEngine on
RewriteCond %{HTTPS} != on
RewriteCond %{SERVER_NAME} =www.maghreb-secours.com [OR]
RewriteCond %{SERVER_NAME} =maghreb-secours.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

相关内容