0

我的 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

4

2 回答 2

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]
于 2012-09-28T20:43:13.153 回答
0

我想通了。事实证明,这是由于 Web 服务器位于负载均衡器后面。

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

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

谢谢, RJ

于 2012-12-05T15:32:36.777 回答