代码之家  ›  专栏  ›  技术社区  ›  arcee123

将多个域的http流量发送到HTTPS

  •  -2
  • arcee123  · 技术社区  · 6 年前

    index.php 文件重定向 http 到机场的交通 https 服务器端。其中包含以下代码:

    <?php
            echo "<script> location.href='https://domain1.com'; </script>";
            exit;
    ?>
    

    当我在服务器上有一个域时,它就可以工作了。现在我有多个:

    domain2.com
    domain3.com
    domain4.com
    etc...
    

    而不是总是自动路由到 domain1.com ?

    更新1:对于那些谁是文件夹询问。这个 http协议 站点是 /var/www/html https协议 /var/www/vhosts/domain1.com/ . 第二个是真实的网站。

    1 回复  |  直到 6 年前
        1
  •  1
  •   CD001    6 年前

    如果您已经在Apache的 httpd-vhosts.conf文件 文件,你可以设置 <VirtualHost>

    例如:

    <VirtualHost *:80>
    ServerName www.domain1.com
    Redirect / https://www.domain1.com
    </VirtualHost>
    
    <VirtualHost _default_:443>
    ServerName www.domain1.com
    DocumentRoot /var/www/vhosts/domain1.com
    
    SSLEngine On
    ... and so on ...
    </VirtualHost>
    
    <VirtualHost *:80>
    ServerName www.domain2.com
    Redirect / https://www.domain2.com
    </VirtualHost>
    
    <VirtualHost _default_:443>
    ServerName www.domain2.com
    DocumentRoot /var/www/vhosts/domain2.com
    
    SSLEngine On
    ... and so on ...
    </VirtualHost>
    


    下一个最好的选择是通过文档根目录下的.htaccess来实现(在您的情况下) /var/www/html

    RewriteEngine On
    RewriteCond %{HTTPS} Off
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    


    如果所有这些都失败了,您可以使用 header()

    <?php
    if(empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'off') {
        header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
        die();
    }
    

    这将是 /var/www/html/index.php 以你为例。


    因为您对HTTP和HTTPS使用不同的docroot,所以可以省去HTTPS检查;你只会打 在HTTP下。