我在修改我的其他规则时遇到了我的mod_rewrite到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
答案 0 :(得分:1)
您需要使用[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]
答案 1 :(得分:0)
我想出来了。事实证明,这是由于Web服务器位于负载均衡器之后。
因此,需要一段时间才能找到,但如果其他人在负载均衡器后面有多个服务器的类似问题,那么这就是您所需要的:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
谢谢,RJ