使用MVC和HTTPS进行重定向

时间:2018-05-02 07:45:07

标签: php .htaccess mod-rewrite

我创建了一个遵循CodeCourse-youtube系列https://www.youtube.com/watch?v=OsCTzGASImQ的MVC结构的网站。

文件夹是结构:

enter image description here

现在有三个.htaccess文件。一个在" bestil" -folder中,一个在" app" -folder中,一个在" public" -folder中。

" Bestil" -folder .htaccess:

RewriteEngine On

RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R,L]

RedirectMatch ^/$ /public/

" public" -folder .htaccess:

Options -MultiViews
RewriteEngine On

RewriteBase /public

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

app文件夹中的.htacess文件只阻止未尝试访问。正如你所看到的,我试图将我的MVC重写条件与https混合 - 这不起作用,因为我加载的所有内容都是"混合",因此.css文件和.js文件被加载通过http。

我不是.htaccess-writing的专家,因此我问你如何制作两个.htacess文件?

谢谢

1 个答案:

答案 0 :(得分:2)

  

正如你所看到的,我试图将我的MVC重写条件与https混合 - 这不起作用,因为我加载的所有内容都是“混合”的,因此.css文件和.js文件都是通过http加载的

问题与mod_rewrite无关。

通过HTTPS加载HTML页面后,它包含指示浏览器通过HTTP加载CSS和JS的说明。

即使尝试这样做会导致重定向回到HTTPS,安全性也已经破坏,因此浏览器会抱怨。

您需要更改HTML,以便从一开始就使用HTTPS为JS和CSS指定的URL。通过使用相对URL而不是绝对URL,最容易实现这一点。