使用mod_rewrite将.htaccess中的特定子域重定向到https

问题描述:

我试图在我的服务器上从测试环境开始测试SSL。规则似乎在我的本地工作,但是当我承诺我的测试服务器时,我得到“太多重定向”错误。使用mod_rewrite将.htaccess中的特定子域重定向到https

下面是有关重写条件/规则,我有:

# Send non-www to www 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

# Send test.mysite.com to https 
RewriteCond %{HTTPS} off 
#RewriteCond %{HTTP_HOST} ^(.+)\.test\.mysite\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^www\.test\.mysite\.com$ [NC] 
RewriteRule^https://www.test.mysite.com%{REQUEST_URI} [L,R=301] 

的目标是发送www.test.mysite.com和test.mysite.com既https://www.test.mysite.com

+0

这些规则对我来说看起来不错......也许有些其他规则在这里干扰?真正的服务器配置或其他动态配置文件中的规则(意外)将_back_重定向到http? – arkascha

+0

如果您找不到任何东西,那么我建议您启用重写日志记录(请参阅重写模块的官方文档)。它允许您检查重写引擎中实际进行的每个步骤。 – arkascha

我已经取消注释行:

RewriteCond %{HTTP_HOST} ^(.+)\.test\.mysite\.com$ [NC] 

而且它似乎现在在私人浏览器正在工作。这是否使www行不必要?

RewriteCond %{HTTP_HOST} ^www\.test\.mysite\.com$ [NC]