我有为我的网站提供服务的apache(httpd),启用了SSL(在https上,端口443)。
此外,在同一台服务器上,我有一个单独的进程,该进程使用端口80。现在,如果要在纯http上将其重定向到https,则我想重定向我的站点。当然,apache的配置无济于事,因为它无法在端口80上使用。请为此提供可能的解决方案!
答案 0 :(得分:0)
基于以下问题的评论(不能修改Apache-conf,独立的PHP进程)
假设您通过staticpageserver.php
(Built-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}