我创建了一个遵循CodeCourse-youtube系列https://www.youtube.com/watch?v=OsCTzGASImQ的MVC结构的网站。
文件夹是结构:
现在有三个.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文件?
谢谢
答案 0 :(得分:2)
正如你所看到的,我试图将我的MVC重写条件与https混合 - 这不起作用,因为我加载的所有内容都是“混合”的,因此.css文件和.js文件都是通过http加载的
问题与mod_rewrite无关。
通过HTTPS加载HTML页面后,它包含指示浏览器通过HTTP加载CSS和JS的说明。
即使尝试这样做会导致重定向回到HTTPS,安全性也已经破坏,因此浏览器会抱怨。
您需要更改HTML,以便从一开始就使用HTTPS为JS和CSS指定的URL。通过使用相对URL而不是绝对URL,最容易实现这一点。