2012-04-16 84 views
1

我遇到了以下問題。https和http組合.htaccess

我有一個網站和目錄/成員/管理員我有一個htaccess的這迫使這些URL去到https:// 其他所有網址都被迫去正常https://開頭

現在,對於/的成員是https://我在頁面中引用了/js/script.js,它被導入到頁面中,但是當然這個目錄/ js被強制爲正常http://而頁面以https://

顯示Internet Explorer用戶如果要查看安全頁面中的非安全內容(如果他們單擊「是」,那沒關係),會顯示一個彈出窗口。如果他們點擊否,那麼JavaScript不起作用。

/js用於普通的http://網站和/ members安全網站。這也是/ images目錄的情況

所以我不知道如何解決這個問題。除了說/ js和/圖像可以是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

有很多方法。這裏僅僅是少數。

號碼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

如果你想 - 你可以將它們合併成單一的規則(更具體) - 但這是不必要的(從我的觀點)。

+0

不錯!這解決了我的問題。 我甚至在根文件夾中有一個.css(壞的設計... argh),所以我爲文件夾和文件類型添加了RewriteRules。我高興,謝謝! – 2012-04-16 13:30:36

+0

@StevenFilipowicz如果你有#1,你就不會真的需要這兩個,因爲它會覆蓋你站點上任何地方的文件(除非你的css/js/images文件夾中有其他文件擴展名,例如.php)。 – LazyOne 2012-04-16 13:38:34

+0

Uuhhh是的,你是對的! 選項[L]有什麼作用?你可能有一個很好的重寫參考教程頁面? 這些重寫規則是如此強大,但我不明白他們,並希望創建和理解這些規則。再次感謝! – 2012-04-16 13:45:35

1

在你的圖片和js目錄創建自己的.htacess文件與它如下: -

RewriteEngine off 

這將關閉寫入該文件夾中的所有文件。

在你的html中,不要在鏈接上指定域,所以做/js/myscript.js而不是http://mydomain.com/js/myscript.js這樣它就會繼承與他們正在查看它的頁面相同的協議。

+0

我沒有嘗試,但我覺得這可能是工作。謝謝! – 2012-04-16 13:32:43

1

一年前我面臨同樣的問題。終於能夠自己得出結論。

看看我的問題和答案htaccess (https to http)

+0

謝謝!我檢查了你的問題。但是LazyOne提供的解決方案是一個非常簡單但有效的解決方案,它一次性工作。感謝您的回覆。 – 2012-04-16 13:33:55

+0

掠過,希望你沒有得到在瀏覽器底部或頂部的破碎的SSL圖標!如果ssl頁面包含來自非ssl的內容,通常顯示的內容看起來不好/安全。 – shikhar 2012-04-16 14:35:56