使用https:// AND www。与cloudflare在子目录中

时间:2015-06-05 18:34:49

标签: apache .htaccess ssl

我有一个与cloudflare.com一起使用的域名。 我使用他们的SSL并成功找到.htaccess修改以使用SSL和WWW,如果我没有手动输入带子目录的路径,它可以正常工作。

所以例如: 当我输入domain.com时,它会将浏览器重定向到https://www.domain.com。到目前为止这很好。 但是当我输入domain.com/administrator(或任何其他子目录)时,它会将浏览器重定向到https://domain.com/administrator,而不是www。

.htaccess文件的内容是:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP_HOST} !=ftp.domain.com
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]

我已尝试过其他的.htaccess规则,但这些规则导致无限循环。 我还尝试过使用cloudflare提供的页面规则,但是不知道如何在每个通过它们的子域上设置https://,所以我会坚持使用.htaccess方法。

编辑:

也试着用这个:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP_HOST} !=ftp.on-filmek.com
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R]

但它导致子域名如下:https://www.www.domain.com/phpmyadmin

1 个答案:

答案 0 :(得分:1)

这样的事情怎么样:

RewriteEngine On
RewriteCond %{HTTP_HOST} !=ftp.domain.com
RewriteCond %{HTTP_HOST} !=www.domain.com
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R]

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP_HOST} =www.domain.com
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]

所以这里我们有两个重写规则,一个会检查https是否已开启且子域名不是ftpwww,在此基础上它将其指向https www版本的网站。第二个检查是否未设置https,但网站在此基础上使用www,它会将网站重定向到https上网站的www版本。