https和http合并.htaccess

时间:2012-04-16 12:41:27

标签: .htaccess http https

我遇到了以下问题。

我有一个网站,对于目录/成员和/ 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]

3 个答案:

答案 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.jsexample.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)