我试图用我的.htaccess文件强制使用https,但是当我这样做时,布局中断,并且在控制台中出现404错误,几乎涵盖了从css文件到js文件等的所有内容。我正在使用MVC结构。
在我的配置文件中,我有:
define('URLROOT', 'https://www.example.com');
在我的标头中,我所有的css文件都这样称呼:
<link href="<?php echo URLROOT; ?>/css/style.css" rel="stylesheet">
我的.htaccess如下:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
</IfModule>
此外,如果我输入https://example.com会转到https,但是如果我只是输入example.com,则默认为http,这也是一个问题。
答案 0 :(得分:1)
将您的http -> https
规则移至顶部:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
请确保在新的浏览器中进行测试,以避免旧的浏览器缓存。
答案 1 :(得分:1)
将其放在.htaccess的顶部,确保更改域名并已设置好-所有HTTP请求(甚至是对静态文件的请求)都将重定向到HTTPS:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.example.com/%{REQUEST_URI} [R,L]