.htaccess mod_在其他规则处于活动状态时重写SSL

.htaccess mod_在其他规则处于活动状态时重写SSL,.htaccess,mod-rewrite,ssl,.htaccess,Mod Rewrite,Ssl,在保留其他规则的同时,我的mod_重写到SSL有问题。我需要所有页面都在SSL上,但通过添加规则,它创建了一个重定向循环 以下是我到目前为止的情况: RewriteEngine on RewriteCond %{HTTP_HOST} ^domain.com$ RewriteRule (.*) https://www.domain.com/ [R=301] RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUE

在保留其他规则的同时,我的mod_重写到SSL有问题。我需要所有页面都在SSL上,但通过添加规则,它创建了一个重定向循环

以下是我到目前为止的情况:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule (.*) https://www.domain.com/ [R=301]

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

RewriteBase /

# Sign up
RewriteRule ^sign-up/$ /register.php [NC]
我哪里会出错呢?我试着改变愤怒的顺序,但没有成功

干杯,
RJ

您需要使用
[L]
标志退出重写迭代:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule (.*) https://www.domain.com/ [R=301,L]

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

RewriteBase /

# Sign up
RewriteRule ^sign-up/$ /register.php [NC]

我明白了。事实证明,这是由于web服务器在负载平衡器后面

因此,需要一段时间才能找到,但如果其他任何人在负载平衡器后面的多台服务器上有类似的问题,您需要:

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

谢谢,RJ

谢谢,回答得好。不幸的是,它没有解决这个问题,仍然存在一个循环。