将http重定向到https,其他服务正在使用端口80

时间:2018-08-10 17:37:14

标签: http https apache2 url-redirection virtualhost

我有为我的网站提供服务的apache(httpd),启用了SSL(在https上,端口443)。

此外,在同一台服务器上,我有一个单独的进程,该进程使用端口80。现在,如果要在纯http上将其重定向到https,则我想重定向我的站点。当然,apache的配置无济于事,因为它无法在端口80上使用。请为此提供可能的解决方案!

2 个答案:

答案 0 :(得分:0)

基于以下问题的评论(不能修改Apache-conf,独立的PHP进程)

假设您通过staticpageserver.phpBuilt-in web server)运行以下脚本php -S 0.0.0.0:80 staticpageserver.php

<?php
#staticpageserver.php

// Your PHP / static content logic below here
echo 'Some content';

在端口80上提供内容。仅对于一个域(例如: your.page.com ),您现在想要重定向到端口443 / HTTPS。 这可以通过在脚本顶部检查 Host 标头并在PHP中重定向来实现:

<?php
#staticpageserver.php

if ($_SERVER['HTTP_HOST'] === 'your.page.com') {
    http_response_code(302); // 302 Found Redirect. Maybe use 301 instead.
    header('Location: https://your.page.com' . $_SERVER['REQUEST_URI']);
    exit; // Do not execute further than the redirect
}

// Your PHP / static content logic below here
echo 'Some content';

对于除该域以外的任何其他访问(另一个域,直接通过IP地址),您仍然可以通过脚本运行。

答案 1 :(得分:-1)

您可以使用.htaccess重定向

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}