.htaccess正确地从HTTP重定向到HTTPS,但为什么HTTP仍然有效?

时间:2017-06-10 15:42:14

标签: .htaccess redirect https

我在htaccess文件中包含以下代码行,以将用户重定向到我网站的HTTPS版本。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} !^www\. [NC]   
    RewriteRule ^(.*)$ https://www\.mysite\.com%{REQUEST_URI} [R=301,L]
</IfModule>

当我在地址栏中输入mysite.comwww.mysite.com时,它会完美无缺,并将我发送到HTTPS版本。 但是,如果我访问Google,请搜索我的网站并点击搜索结果中的链接,它仍会将我带到HTTP版本。我有3个问题。

1)一旦用户与服务器和我的htaccess文件联系,为什么浏览器不会自动重定向?

2)开启HTTP后,HTTPS不应关闭?

3)为了完全切换,我需要在Godaddy控制面板内部使用重定向或类似的东西吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

使用:

private File createImageFile() throws IOException{
        File image = null;
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); //Get Date
        String imageFileName = "JPEG_" + timeStamp + "_";
        File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); //Get the directory of pictures


        if (isExertnalStorageWritable()){
            if(isExternalStorageReadable()) {
                image = File.createTempFile(imageFileName, ".jpg", storageDir); //Create the temp file
                mCurrentPhotoPath = image.getAbsolutePath();
            }
        }

        return image;
    }

使用<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ https://www\.mysite\.com%{REQUEST_URI} [R=301,L] </IfModule> 因为现在只重定向http而没有www。
在测试之前清除浏览器缓存。