如何在不使用URL重写的情况下将网站从HTTP重定向到HTTPS?

时间:2018-10-02 19:02:53

标签: http iis-7

我已经尝试过使用 URL重写正常运行,但是我想知道是否还有另一个最佳解决方案

<rewrite>
        <rules>
            <rule name="HTTP to HTTPS " enabled="true" stop Processing="true">
                <match URL="(.*)" />
                <conditions>
                    <add input="{HTTPS}" pattern="off" />
                </conditions>
                <action type="Redirect" URL="https://{HTTP_HOST}/{R:1}" />
            </rule> 
        </rules>

这是我用于重定向的代码

1 个答案:

答案 0 :(得分:0)

我使用PHP代码按如下方式处理重定向,并且可以在具有PHP和SSL的任何服务器上工作。您必须指定要使用的子域,但这是次要的,通常变化不大。只需将其放置在文件中,并将其包含在要重定向到HTTPS的任何页面的顶部即可。

if (!(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || 
   $_SERVER['HTTPS'] == 1) ||  
   isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&   
   $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'))
{
    //echo $_SERVER["HTTP_HOST"];
    $subdomains = array('cp','rec','dsm','outback','live','pw');
    $host = explode('.',$_SERVER['HTTP_HOST']);
    if(in_array($host[0],$subdomains)) {
       $redirect = 'https://' . str_replace('www.','',$_SERVER['HTTP_HOST']) . $_SERVER['REQUEST_URI'];
    }
    else {
       $redirect = 'https://www.' . str_replace('www.','',$_SERVER['HTTP_HOST']) . $_SERVER['REQUEST_URI'];
    }
    echo $redirect;
   header('HTTP/1.1 301 Moved Permanently');
   header('Location: ' . $redirect);
   exit();
}