由于www规则,将子域重定向到文件夹无限重定向

时间:2017-07-24 18:51:57

标签: apache .htaccess redirect mod-rewrite

我尝试将单个子域添加到现有网站。我们添加了适当的A'记录。我们希望staging.example.com显示example.com/test/的内容(并保留staging.example.com)。

.htaccess文件(由其他人编写)将所有非https重定向到https,将所有非www重定向到www:

RewriteEngine On
RewriteBase /

#Rewrite http to https
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

#Rewrite non-www to www
RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://www\.%{HTTP_HOST}/$1 [R=301,L]

我尝试在最后RewriteRule之前添加如下所示的行:

RewriteCond %{HTTP_HOST} !^staging\.(.+)$ [NC]

但是,它始终会进入www.staging.example.com ...

的重定向循环

建议非常感谢。

1 个答案:

答案 0 :(得分:1)

这是因为您使用WWW重定向将BACK指向HTTP。将其更改为https:

修改

我也会反驳您的陈述..这完全是我使用的 - 我可以验证它对我有用:

RewriteEngine On
# to www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# to https
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]