在.htaccess中使用HTTPS自动将网站加载到子文件夹

时间:2017-10-07 18:35:15

标签: php .htaccess redirect mod-rewrite https

我刚刚在服务器上安装了SSL证书。

当前网址:www.example.com

当前正在使用的htaccess文件:

RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule ^(.*)$ public/ [L]

它重定向到public / index.php。

但问题是当我在htaccess中添加HTTPS代码时,这个public / index.php无效。

RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^example\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.example\.com$ 
RewriteRule ^/?(.*) https://www.example.com/$1 [R] 

当我删除公共重定向部分时,HTTPS正在工作,但没有指向public / index.php。

如何合并这些规则,以便使用https网址重定向到public / index.php。

PS:public / htaccess

ReWriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]

请帮忙!

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用PHP重定向到您的HTTPS网站:

if(empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == "off"){
    $redirect = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: ' . $redirect);
    exit();
}

来自:Redirecting from HTTP to HTTPS with PHP

但是,这段代码需要包含在每个页面中,或者包含在所有其他文件中包含的PHP文件中。