我有这个index.php
文件将http
流量重定向到服务器的https
端。其中包含以下代码:
<?php
echo "<script> location.href='https://domain1.com'; </script>";
exit;
?>
当服务器上有一个域时,它可以正常工作。现在我有多个:
domain2.com
domain3.com
domain4.com
etc...
如何告诉脚本将各个域重定向到https
,而不是始终自动路由到domain1.com
?
谢谢!
更新1:面向那些询问文件夹的人。 http
站点是/var/www/html
,而https
站点是/var/www/vhosts/domain1.com/
。第二个是真实站点。
答案 0 :(得分:1)
如果您已经在Apache的 httpd-vhosts.conf 文件中配置域,则只需在端口80上设置<VirtualHost>
即可重定向到相关的https域。
例如:
<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中使用http标头重定向来完成此操作-像这样:
<?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使用了不同的文档根目录,因此可以省去HTTPS检查。无论如何,您只会在HTTP下点击/var/www/html
。