mod_rewrite SSL与其他规则有效

时间:2012-09-28 17:00:25

标签: .htaccess mod-rewrite ssl

我在修改我的其他规则时遇到了我的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

2 个答案:

答案 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