使用Mvc在htaccess中强制使用https显示js和css文件的404错误

时间:2018-08-09 18:13:57

标签: apache .htaccess

我试图用我的.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,这也是一个问题。

2 个答案:

答案 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]