我遇到了以下问题。
我有一个网站,对于目录/成员和/ admin我有一个.htaccess强制这些URL转到https:// 所有其他网址都被强制转为正常的https://
现在,对于/ https的成员://我在页面中有一个对/js/script.js的引用,它被导入到页面中,但当然这个目录/ js被强制为正常的http://而该页面显示在https://
中如果Internet Explorer用户想要在安全页面中查看非安全内容,则会显示一个弹出窗口,如果他们单击是,则表示没问题。如果他们点击否,则javascript不起作用。
/ js用于普通的http://网站以及/ members安全网站。 / images目录
也是如此所以我不确定如何解决这个问题。除了说/ js和/ images可以是https或http。但我不知道如何在htaccess文件中配置它。
非常感谢任何帮助!
这是我现在使用的htaccess文件:
#Turn SSL on everything, except members and admin
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} ^(/members|/admin)
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Turn SSL off everything, except members and admin
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} !^(/members|/admin)
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
答案 0 :(得分:3)
有很多方法。这里只是几个。
数字1。在您的规则之前添加 :
# do not do anything for js/css/image files
# (will affect ALL such files in ALL folders)
RewriteRule \.(css|js|jpe?g|gif|png|ico)$ - [L]
上述规则将保留所有css / js /图像文件的协议(网站上的任何位置)
2号。在您的规则之前添加 :
# do not do anything to any files in css/js/images folders
RewriteRule ^(css|js|images)/ - [L]
上述规则会将协议保留为css / js / image文件夹中的所有文件(例如example.com/js/main.js
,example.com/images/logo.png
甚至example.com/js/compress.php
如果你想要 - 你可以将它们组合成单一规则(更具体) - 但这是不必要的(从我的角度来看)。
答案 1 :(得分:1)
在您的images和js目录中创建自己的.htacess文件,其中包含以下内容: -
RewriteEngine off
这将关闭该文件夹中所有文件的写入。
在你的html中,不要在链接上指定域名,所以/js/myscript.js
而不是http://mydomain.com/js/myscript.js
这样,它只会继承与他们正在查看的页面相同的协议。
答案 2 :(得分:1)
一年前我遇到了同样的问题。能够最终得出我自己的结论。
查看我的问题并回答htaccess (https to http)